MySQL DATETIME类型BETWEEN查询未返回预期结果求助
问题分析与解决方案
哦,这个问题我一眼就揪出症结了——你的BETWEEN条件里的时间顺序完全搞反啦!
核心问题:BETWEEN的参数顺序规则
BETWEEN操作符的逻辑是 字段 BETWEEN 下限值 AND 上限值,它等价于 字段 >= 下限值 AND 字段 <= 上限值。你现在写的查询语句是:
SELECT * FROM dashboard WHERE added BETWEEN "2018-05-08 10:32:32" AND "2018-05-08 10:28:30"
这就相当于要求added同时满足「大于等于10:32:32」并且「小于等于10:28:30」——一个时间不可能同时比晚时间大、比早时间小,自然返回空结果集。
修正后的查询语句
把两个时间的顺序调换,让早的时间在前,晚的时间在后:
SELECT * FROM dashboard WHERE added BETWEEN "2018-05-08 10:28:30" AND "2018-05-08 10:32:32"
要是怕以后再犯类似顺序错误,也可以用显式的>=和<=写条件,逻辑更直观:
SELECT * FROM dashboard WHERE added >= "2018-05-08 10:28:30" AND added <= "2018-05-08 10:32:32"
额外排查点(如果修正后仍无结果)
虽然当前问题99%是时间顺序导致的,但如果调整后还是查不到数据,可以检查:
- 生产服务器和开发服务器的时区设置是否一致:如果
added字段存储的是本地时间,时区差异可能导致查询时的时间解析出现偏差。 - 数据导入是否完整:确认从生产导出的数据集确实包含你预期的时间范围内的数据,没有在导入过程中丢失或损坏。
内容的提问来源于stack exchange,提问作者Rejoanul Alam
相关产品推荐
相关产品推荐

