将MySQL BigInt(20)unix纪元时间转换为日期时间(3)

时间:2017-12-29 22:48:29

标签: mysql datetime unix

select from_unixtime(floor(1510156036741/1000), '%Y %D %M %h:%i:%s');

'2017年11月8日07:47:16'

上面的代码输出一个不包含毫秒精度的时间戳。如何将unix纪元时间转换为包含毫秒的datetime(3)对象?

可以得到像微秒一样的微秒:

select from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s %f');

'2017年11月8日07:47:16 741000'

是否可以将微秒结果转换为毫秒?

1 个答案:

答案 0 :(得分:1)

它有点笨重,但你可以提取微秒并将其除以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年11月8日03:47:16 741"