You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在MySQL中查询当前时间的毫秒级时间戳?

获取MySQL当前时间的毫秒级时间戳

你说得对,UNIX_TIMESTAMP()UNIX_TIMESTAMP(NOW())确实只能返回秒级的时间戳,这就是两者结果完全一致的原因——它们都只精确到1970纪元以来的整秒数。要得到类似JavaScript中Date.parse(new Date())的毫秒级时间戳,得利用MySQL对微秒级时间的支持,具体分两种情况处理:

方法一:MySQL 5.6.4及以上版本(推荐)

从MySQL 5.6.4开始,时间函数正式支持微秒精度。你可以通过以下两种方式计算毫秒级时间戳:

-- 方式1:直接转换带微秒的时间戳
SELECT FLOOR(UNIX_TIMESTAMP(NOW(6)) * 1000) AS now_in_mili;

-- 方式2:拆分秒和微秒部分再组合
SELECT UNIX_TIMESTAMP() * 1000 + MICROSECOND(NOW()) DIV 1000 AS now_in_mili;

细节说明:

  • NOW(6):返回当前系统时间,精确到微秒(格式示例:2024-05-20 16:05:40.789123
  • UNIX_TIMESTAMP(NOW(6)):将带微秒的时间转换为带小数的秒级时间戳(比如1716206740.789123
  • 乘以1000后得到毫秒级数值,用FLOOR()取整就能得到和JavaScript一致的整数毫秒戳

如果你的MySQL是8.0及以上版本,也可以用CURRENT_TIMESTAMP(6)替代NOW(6),效果完全相同。

方法二:低版本MySQL(低于5.6.4)

如果你的MySQL版本不支持微秒精度,数据库层面没办法直接获取毫秒级时间戳。这种情况下建议在应用层处理:比如用JavaScript、Python等语言先获取当前时间的毫秒数,再传入数据库使用。

内容的提问来源于stack exchange,提问作者Yaniv Peretz

火山引擎 最新活动