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

MySQL Timestamp模糊范围查询异常:为何显示11-03数据不显示10-03数据

问题原因分析
  • 你写的>= "2023-10-03%"和<= "2023-11-03%"是字符串字典序比较,而非预期的日期范围匹配:
    • 当capture_time是datetime类型时,数据库会将其转换为字符串格式(如'2023-10-03 23:59:59')进行比较。'2023-10-03 '(注意末尾的空格)的ASCII码(32)小于'2023-10-03%'中%的ASCII码(37),因此'2023-10-03 23:59:59' < '2023-10-03%',不满足>=条件,被过滤掉。
    • 而'2023-11-03 23:59:59'同样小于'2023-11-03%',但你的条件是<= '2023-11-03%',因此该数据满足条件被查询出来。
正确的SQL写法

如果capture_time是datetime/timestamp类型,直接用日期范围查询即可,不需要加%:

SELECT * FROM 
    vehicle_warning_message v 
WHERE 
    v.capture_time >= '2023-10-03 00:00:00' 
    AND v.capture_time <= '2023-11-03 23:59:59';

或者更简洁的BETWEEN写法:

SELECT * FROM 
    vehicle_warning_message v 
WHERE 
    v.capture_time BETWEEN '2023-10-03 00:00:00' AND '2023-11-03 23:59:59';

如果要避免毫秒级数据遗漏,还可以这样写:

SELECT * FROM 
    vehicle_warning_message v 
WHERE 
    v.capture_time >= '2023-10-03' 
    AND v.capture_time < '2023-11-04';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:25:43