日付の形式が正しくないと SQLite 日付範囲クエリで問題が発生する
SQLite データベースに特定の日付範囲内のデータをクエリするときによく発生する問題は、クエリが指定された範囲を無視してすべての日付を返すことです。 これは多くの場合、SQLite の日付形式に関する誤解から生じます。
SQLite では、日付を YYYY-MM-DD 形式にする必要があります。 「11/1/2011」や「11/8/2011」などの他の形式を使用したクエリは、日付ではなくテキスト文字列として扱われます。
これにより、次のようなクエリが予期せぬ動作をすることになります:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN '11/1/2011' AND '11/8/2011'</code>
SQLite は '11/1/2011' と '11/8/2011' を文字列として扱うため、BETWEEN
演算子はそれらを辞書編集的に (テキストとして) 比較します。 クエリは、実際の日付に関係なく、date
列にこれらの文字列が含まれる行を返します。
解決策は、データベース内のすべての日付とクエリが YYYY-MM-DD 形式に厳密に従っていることを確認することです。これにより、SQLite は日付を正しく解釈し、日付範囲の正確な結果を返すことができます。
以上がSQLite 日付範囲クエリが予期しない結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。