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

Between运算符日期相等无返回值及SQL查询结果不符求助

解决SQLite中BETWEEN查询带时间的日期字段无结果的问题

这问题我之前在SQLite里踩过同款坑!核心原因是你忽略了datetime字段包含时间部分,而直接用纯日期字符串做BETWEEN比较时,SQLite会自动把纯日期解析为当天的零点('2018-04-03 00:00:00'),你的记录里Date字段是'2018-04-03 18:30:00',显然比当天零点晚,所以不在BETWEEN '2018-04-03' AND '2018-04-03'的区间里,自然查不到结果。

给你三个可行的解决方案:

  • 方案1:将结束日期设为下一天的零点
    因为BETWEEN是闭区间,把结束时间设为目标日期的下一天,就能包含目标日期当天所有时间的记录:

    SELECT * FROM Products WHERE Date BETWEEN '2018-04-01' AND '2018-04-04';
    
  • 方案2:用DATE()函数提取日期部分比较
    SQLite的DATE()函数可以从datetime字符串中提取纯日期部分,这样不管时间是几点,只要日期在区间内就会被匹配:

    SELECT * FROM Products WHERE DATE(Date) BETWEEN '2018-04-01' AND '2018-04-03';
    
  • 方案3:用>=和<组合查询(推荐)
    这种写法更直观,避免BETWEEN闭区间带来的歧义,明确包含起始日期及之后,且小于结束日期的下一天:

    SELECT * FROM Products WHERE Date >= '2018-04-01' AND Date < '2018-04-04';
    

另外要注意,SQLite里并没有专门的datetime类型,这类字段实际是存储为文本的,比较时是按字符串字典序来的,所以一定要确保日期格式是YYYY-MM-DD HH:MM:SS这种标准格式,否则可能出现比较错误。

内容的提问来源于stack exchange,提问作者L. Page

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:12:40