ホームページ >データベース >mysql チュートリアル >BETWEEN を使用した SQLite 日付範囲クエリですべての日付が返されるのはなぜですか?

BETWEEN を使用した SQLite 日付範囲クエリですべての日付が返されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 11:17:43793ブラウズ

Why Does My SQLite Date Range Query Using BETWEEN Return All Dates?

SQLite 日付範囲クエリのトラブルシューティング

一般的な SQLite クエリの問題には、「MM/DD/YYYY」形式の日付で BETWEEN 演算子を使用すると、必要な範囲ではなく予期せずすべての日付が返されることが含まれます。

問題: 日付の形式が正しくありません

SQLite では、日付を「YYYY-MM-DD」の形式にする必要があります。 データベースまたはクエリが別の形式 (「MM/DD/YYYY」など) を使用している場合、SQLite は日付を文字列として扱うため、誤った結果が生じ、テーブル内のすべての日付が選択されることがよくあります。

解決策: 一貫した日付形式

修正は簡単です。すべての日付で一貫した「YYYY-MM-DD」形式を保証します。 これは 2 つの方法で実現できます:

  1. データベースの変更: strftime('%Y-%m-%d', date_column) 関数を使用して、データベースの列を正しい形式に更新します。

  2. クエリの変更: 正しい形式を直接使用するように SQL クエリを変更します。 例:

<code class="language-sql">SELECT * FROM test WHERE date BETWEEN '2011-11-01' AND '2011-11-08';</code>

正しい日付形式を使用すると、BETWEEN 句が期待どおりに機能し、指定した範囲内の日付のみを正確に選択します。

以上がBETWEEN を使用した SQLite 日付範囲クエリですべての日付が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。