ホームページ  >  記事  >  データベース  >  MySQL で 2 つの日付間のデータを正しく選択する方法は?

MySQL で 2 つの日付間のデータを正しく選択する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-24 16:04:43219ブラウズ

How to Correctly Select Data Between Two Dates in MySQL?

MySQL で 2 つの日付の間のデータを選択する

MySQL で日付と時刻のデータを操作する場合、特定の日付範囲内にあるデータを選択する必要があるのが一般的です。 。ただし、created_at 列を日時値として使用する場合、短い日付のデフォルトの解釈は午前 0 時です。

問題:

次のようなクエリが実行される状況が発生する可能性があります。次の例では、行の created_at タイムスタンプが指定された日付内にあるにもかかわらず、行が返されません。 range:

SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-06'

Solution:

問題は、クエリが実際に '2011-12-01 00:00:00 の範囲のデータを選択していることです。 」から「2011-12-06 00:00:00」まで。これを修正するには、いくつかの方法があります:

  • 終了日の範囲を拡張する: 次の範囲を使用するようにクエリを変更します:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
  • DATE_ADD を使用する(): 元の終了日に 1 日を加えて終了日を計算します。 date:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
  • 読みやすくするために BETWEEN 演算子を利用します:
SELECT `users`.* FROM `users` WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))

これらのアプローチのいずれかを使用すると、指定された範囲内にあるデータが正しく選択されます。日付範囲 ('2011-12-06 などの created_at タイムスタンプを持つ行を含む) 10:45:36'.

以上がMySQL で 2 つの日付間のデータを正しく選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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