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中文網其他相關文章!