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

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

DDD
リリース: 2024-11-19 10:44:03
オリジナル
500 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート