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

问题描述 投票:0回答:1
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'

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

mysql datetime unix
1个回答
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”

© www.soinside.com 2019 - 2024. All rights reserved.