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 中国語 Web サイトの他の関連記事を参照してください。