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'
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
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 サイトの他の関連記事を参照してください。