You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用epoch时间戳查询data_stats表当日更新记录的方法

问题排查与解决方法

核心原因

你执行的查询返回空的绝大多数原因是:updated_at字段存储的是13位毫秒级Unix时间戳,而FROM_UNIXTIME函数默认仅支持传入10位秒级时间戳,直接传入毫秒值会得到超出当前日期的错误结果,自然匹配不到记录。

验证方法

可以先执行以下语句确认时间戳精度:

-- 取一条记录的时间戳做转换测试
SELECT FROM_UNIXTIME(updated_at) AS test_time FROM `data_stats` LIMIT 1;

如果返回的test_time为NULL或者明显是远超当前的未来日期,就说明是毫秒级时间戳。

正确写法

写法1:字段函数转换(仅适配小表,无法走索引)

如果是毫秒级时间戳,只需要把字段值先除以1000转为秒级即可:

SELECT * FROM `data_stats` WHERE FROM_UNIXTIME(updated_at/1000,"%Y-%m-%d") = CURRENT_DATE;

写法2:时间戳范围匹配(推荐,可走updated_at索引,大表性能好)

避免对查询字段做函数运算,直接计算当日的时间戳范围做匹配:

秒级时间戳场景

SELECT * FROM `data_stats` 
WHERE 
  updated_at >= UNIX_TIMESTAMP(CURRENT_DATE)
  AND updated_at < UNIX_TIMESTAMP(DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY));

毫秒级时间戳场景

SELECT * FROM `data_stats` 
WHERE 
  updated_at >= UNIX_TIMESTAMP(CURRENT_DATE) * 1000
  AND updated_at < UNIX_TIMESTAMP(DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)) * 1000;

内容的提问来源于stack exchange,提问作者Gol. D Roger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:06:03