select from_unixtime(floor(1510156036741/1000), '%Y %D %M %h:%i:%s');
'2017 8 ноября 07:47:16'
Вышеупомянутый код выводит метку времени, которая не включает миллисекундную точность. Как преобразовать время эпохи unix в объект datetime (3), который включает миллисекунды?
Можно получить микросекунды, например:
select from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s %f');
'2017 8 ноября 07:47:16 741000'
Можно ли преобразовать микросекундный результат в миллисекунды?
Его немного неуклюжие, но вы можете извлечь микросекунду и разделить ее на 1000, чтобы преобразовать ее в миллисекунды. Здесь я также передал его int и объединил его с форматированной датой для создания окончательной строки даты:
SELECT CONCAT(
from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s '),
CAST(EXTRACT(MICROSECOND FROM from_unixtime(1510156036741/1000))/1000
AS SIGNED)
);
"2017 8 ноября 03:47:16 741"