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

MySQL存储为毫秒时间戳的bigint字段如何按日期条件正确查询

问题原因

CURDATE()返回的是YYYY-MM-DD格式的日期值,和premium_end_date存储的数值型时间戳类型不匹配,直接比较会触发隐式类型转换,导致条件永远不成立。


解决方案

不需要修改字段类型,按照你实际存储的时间戳精度选择对应写法即可:

  1. 参考你提供的样例数据,premium_end_date是10位数值,实际为秒级Unix时间戳,优先使用如下写法:
WHERE premium_end_date >= UNIX_TIMESTAMP(CURDATE())

该写法将当前日期0点的时间转为对应秒级时间戳数值,和字段类型完全匹配,且可以命中premium_end_date字段上的索引,查询性能最优。

  1. 如果你确认字段实际存储的是13位毫秒级时间戳,只需将转换后的值乘以1000即可:
WHERE premium_end_date >= UNIX_TIMESTAMP(CURDATE()) * 1000

注意事项

不要使用FROM_UNIXTIME(premium_end_date) >= CURDATE()这类写法,对字段做函数运算会导致索引失效,数据量大时查询性能会大幅下降。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:00:04