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

MySQL中WHERE子句使用ADD_DATE()查询近4小时记录无返回问题

错误点分析
  • 你的WHERE条件中creation_time >= DATE_ADD(creation_time, INTERVAL 4 HOUR)的逻辑不成立:对任意一行记录来说,creation_time本身是固定的时间值,给它加4小时得到的时间一定比它本身晚,不存在任何时间能满足「自身时间 >= 自身时间+4小时」的判断,所以所有行都无法匹配条件,自然返回空结果。
  • 时间范围判断逻辑不符合需求:你要查询「近4小时创建的记录」,是需要将creation_time和当前时间往前推4小时的时间节点做对比,而非和自身做运算对比。
解决方案

将WHERE条件中的时间对比逻辑替换为当前时间减4小时即可,正确SQL如下:

SELECT id,name,status,creation_time, DATE_ADD(creation_time, INTERVAL 4 HOUR) AS modified_time 
FROM booking
WHERE status=1 AND creation_time >= DATE_SUB(NOW(), INTERVAL 4 HOUR)

如果要使用DATE_ADD实现同样的效果,也可以写成:

SELECT id,name,status,creation_time, DATE_ADD(creation_time, INTERVAL 4 HOUR) AS modified_time 
FROM booking
WHERE status=1 AND creation_time >= DATE_ADD(NOW(), INTERVAL -4 HOUR)

注:如果你的数据库不支持NOW(),可以替换为CURRENT_TIMESTAMP,两者语义一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 06:24:07