ホームページ >データベース >mysql チュートリアル >時刻を含む 2 つの日付間の MySQL データを正しく選択するにはどうすればよいですか?

時刻を含む 2 つの日付間の MySQL データを正しく選択するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-19 10:44:03482ブラウズ

How to Correctly Select MySQL Data Between Two Dates Including Time?

MySQL: 2 つの日付の間のデータの選択

MySQL で日時フィールドを操作するときは、日付のニュアンスを認識することが重要です書式設定。お気づきのとおり、時間を考慮せずに日付形式 '2011-12-06 10:45:36' を使用すると、特定の日付間のデータを取得しようとすると予期しない結果が生じる可能性があります。

Midnight Trap

MySQL のデフォルトの日付の短縮バージョンは、00:00:00 を日付の開始として解釈します。 日。これは、クエリ:

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

が実質的に次のようになったことを意味します:

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

その結果、期待していた項目「2011-12-06 10:45:36」は、時間コンポーネントが指定された範囲外だったため除外されました。

エレガント解決策

この問題に対処するには、いくつかのオプションがあります:

  • 終了日を延長します: 次の日を含むようにクエリを変更します。全体を捉える範囲:
SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-07'
  • DATE_ADD を使用: DATE_ADD 関数を使用して終了日に間隔を追加します:
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));

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

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