SQLite如何查询特定时间段内的所有数据条目?
查询特定时间段内的数据条目解决方案
你的Date列已经是标准的YYYY-MM-DD日期格式,不需要额外转换,直接用比较运算符就能精准筛选时间段,最直接的SQL语句如下:
SELECT * FROM Touurs WHERE Date BETWEEN '2023-01-01' AND '2023-05-10';
也可以用等价的范围写法,效果完全一致:
SELECT * FROM Touurs WHERE Date >= '2023-01-01' AND Date <= '2023-05-10';
关于strftime无效的原因
如果之前用strftime没得到正确结果,大概率是用法冗余或错误。比如在SQLite这类数据库中,当列本身就是标准日期格式时,额外用strftime转换属于画蛇添足;如果你的Date列是字符串类型,错误的格式参数也会导致匹配失败。举个典型的错误写法:
strftime('%Y-%m-%d', Date) BETWEEN '2023-01-01' AND '2023-05-10'
这种写法语法没问题,但完全没必要,反而可能因为隐式转换导致性能或结果异常。
额外注意点
- 检查
Date列是否存在无效格式(比如2023/01/01、01-05-2023),非标准格式会直接破坏比较逻辑。 - 若数据库有时区配置,确认数据存储的日期是否与查询的时区一致,避免跨时区导致的结果偏差。
内容的提问来源于stack exchange,提问作者Luca.
相关产品推荐
相关产品推荐

