SQLite 查询为何忽略日期范围条件?
问题描述:
在使用 SQLite 数据库查询特定日期范围内的记录时,结果却包含所有日期,即使是超出指定范围的日期。使用的查询语句如下:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";</code>
问题原因:
问题在于日期格式。SQLite 需要日期格式为 YYYY-MM-DD(例如 "2011-11-01" 到 "2011-11-08")。但是,查询中提供的日期格式为 "MM/DD/YYYY"。
当执行查询时,SQLite 将日期字符串解释为文本而不是日期。因此,它忽略日期条件,并检索 "test" 表中的所有行,而不管实际的日期值如何。
解决方案:
为了解决这个问题,请将日期字符串转换为 YYYY-MM-DD 格式:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "2011-11-01" AND "2011-11-08";</code>
通过使用正确的日期格式,SQLite 可以正确评估条件,并将结果限制在指定日期范围内的记录。
以上是尽管使用了 BETWEEN 子句,为什么我的 SQLite 查询仍返回所有日期?的详细内容。更多信息请关注PHP中文网其他相关文章!