ホームページ > データベース > mysql チュートリアル > MySQL クエリで 2 つの日付の間に欠落している日付を入力するにはどうすればよいですか?

MySQL クエリで 2 つの日付の間に欠落している日付を入力するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-16 22:14:13
オリジナル
529 人が閲覧しました

How to Populate Missing Dates in MySQL Queries Between Two Dates?

MySQL で 2 つの日付間のデータを取得するときに欠落している日付を設定する

MySQL では、BETWEEN 演算子を使用して 2 つの日付間のデータを選択する場合、指定された範囲内の一部の日付には、対応するデータがない可能性があります。これにより、クエリ結果に空の行または欠落行が生じる可能性があります。

問題ステートメント:

次に示すように、日付に関連付けられたデータを含む "tbl" という名前のテーブルについて考えます。 :

Date Data
2009-06-25 75
2009-07-01 100
2009-07-02 120

「2009-06-25」から「2009-06-25」までのすべてのデータを取得したい場合次のクエリを使用した '2009-07-01':

SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01';
ログイン後にコピー

クエリは、指定された範囲内の既存のデータを含む行のみを返します。これは、「2009-06-26」、「2009-06-27」、「2009-06-28」などのデータのない日付は結果から除外されることを意味します。

解決策: 欠落している日付を入力するためのカレンダー テーブル

この問題に対処し、すべての日付を含めるには指定された範囲内では、データの有無に関係なく、「カレンダー テーブル」として知られる概念を利用できます。これらのテーブルは、指定された間隔内で一連の日付を生成するのに役立ち、基本的にすべての可能な日付の「疑似」テーブルとして機能します。

MySQL でカレンダー テーブルを作成する方法の例を次に示します。

-- Create a table with integers from 0 to 9
CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

-- Generate a sequence of dates from '2009-06-25' to '2009-07-01'
SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY AS date
FROM ints a JOIN ints b
WHERE date BETWEEN '2009-06-25' AND '2009-07-01';
ログイン後にコピー

カレンダー テーブルを作成したら、データ テーブルとの左結合を実行して、欠落している日付を入力できます。更新されたクエリは次のとおりです。

SELECT cal.date, tbl.data
FROM (
SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY AS date
FROM ints a JOIN ints b
WHERE date BETWEEN '2009-06-25' AND '2009-07-01'
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
ログイン後にコピー

このクエリは、「tbl」テーブルにデータがない日付も含め、指定された範囲内のすべての日付を取得します。データが欠落している日付の「データ」列には NULL 値が入ります。

以上がMySQL クエリで 2 つの日付の間に欠落している日付を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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