首頁 >資料庫 >mysql教程 >如何填入 MySQL 查詢中缺少的日期以獲得完整的日期範圍?

如何填入 MySQL 查詢中缺少的日期以獲得完整的日期範圍?

Susan Sarandon
Susan Sarandon原創
2024-12-16 18:52:22523瀏覽

How Can I Populate Missing Dates in MySQL Queries for Complete Date Ranges?

在MySQL 中填充日期範圍的資料間隙

人們可能會遇到需要檢索兩個特定日期之間的資料的情況,即使該範圍內的某些日期沒有條目。為了應對這項挑戰,一種流行的方法是創建「日曆表」。

考慮以下表格結構:

CREATE TABLE data (
  date DATE,
  value INT
);

INSERT INTO data VALUES
  ('2009-06-25', 75),
  ('2009-07-01', 100),
  ('2009-07-02', 120);

檢索「2009-06-25」和「2009-06-25」之間的所有資料' 2009-07-01',可以使用以下查詢:

SELECT date, value
FROM data
WHERE date BETWEEN '2009-06-25' AND '2009-07-01';

但是,此查詢將排除指定範圍內沒有與之關聯的資料的任何日期。為了解決這個問題,使用了日曆表。

要為給定的日期範圍建立日曆表,可以採取以下步驟:

CREATE TABLE cal (
  date DATE
);

INSERT INTO cal (date)
SELECT DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY)
FROM ints i CROSS JOIN ints j
WHERE DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY) BETWEEN '2009-06-25' AND '2009-07-01';

日曆表將包含所有日期在「2009-06-25」和「2009-07 -01”之間,但沒有任何關聯資料。要檢索所需的資料以及間隙,可以使用左連接:

SELECT cal.date, data.value
FROM cal
LEFT JOIN data ON cal.date = data.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

此查詢將傳回指定範圍內的所有日期,包括那些沒有資料的日期,這些日期將以NULL 值表示值列。

以上是如何填入 MySQL 查詢中缺少的日期以獲得完整的日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn