MySQL で 2 つの日付間のデータを適切に選択するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-20 12:48:13
オリジナル
544 人が閲覧しました

How to Properly Select Data Between Two Dates in MySQL?

2 つの日付間の MySQL データベースからのデータの選択

MySQL では、日付を保存するときに特定の日付範囲内のデータを取得するときに一般的な課題が発生します。日時値として。 >= 演算子と <= 演算子を使用すると、日付の始まりとして午前 0 時がデフォルトで解釈されるため、必ずしも望ましい結果が得られるとは限りません。

created_at 列が該当するレコードを選択するシナリオを考えてみましょう。 「2011-12-01」と「2011-12-06」の間。次のクエリを実行すると、'2011-12-06 10:45:36' に発生した予期されたレコードが驚くべきことに除外されます:

SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-06'
ログイン後にコピー

その理由は、MySQL が終了日を午前 0 時 ('2011- 12-06 00:00:00')、その日以降に作成されたレコードは事実上除外されます。目的のレコードを選択するには、終了日を '2011-12-07' に変更します。

SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-07'
ログイン後にコピー

または、DATE_ADD() を使用して開始日に日数を追加し、目的の終了日を含む間隔を作成します。 date:

SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)</p>
<p>読みやすさを向上させるために、BETWEEN 演算子を次のようにすることができます。利用:</p>
<pre class="brush:php;toolbar:false">SELECT `users`.* FROM `users` 
WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))
ログイン後にコピー

終了日を調整するか、DATE_ADD() 関数を使用することで、指定した日付範囲からデータを正確に選択し、意図した終了日に作成されたすべてのレコードが確実にキャプチャされるようにすることができます。

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

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