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

MySQL データ取得で欠落している日付を入力するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-12 19:09:11
オリジナル
357 人が閲覧しました

How to Populate Missing Dates in MySQL Data Retrievals?

日付間のデータの取得: 空のレコードの作成

MySQL では、通常、指定された日付範囲内のデータの選択は BETWEEN 演算子を使用して行われます。ただし、この方法では、データが存在しない日付が欠落する可能性があります。これを解決するには、「カレンダー テーブル」を使用する手法が使用されます。

カレンダー テーブルの概念は、目的の範囲内の日付のシーケンスを含むテーブルを作成することです。これは、次のコードを使用して実現されます:

CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
ログイン後にコピー

このテーブルには、0 から 9 までの数値の範囲が表示されます。カレンダー テーブルを生成するには、int とそれ自体を複数回結合して、日付間隔のリストを作成します。

SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
FROM ints a JOIN ints b
ORDER BY a.i * 10 + b.i
ログイン後にコピー

結果は、「2009-06-25」から「2009-06-25」までの一連の日付を含むテーブルです。 「2009年7月4日」。データを取得するために、カレンダー テーブルと元のテーブルを左結合します。

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
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
ログイン後にコピー

このクエリは、'2009-06-25' から '2009-07-01' までのすべての日付のデータを返します。 「0」が入力されたデータのない行も含まれます。

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

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