Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan MySQL untuk Julat Tarikh Lengkap?

Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan MySQL untuk Julat Tarikh Lengkap?

Susan Sarandon
Susan Sarandonasal
2024-12-16 18:52:22599semak imbas

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

Mengisi Jurang Data untuk Julat Tarikh dalam MySQL

Seseorang mungkin menghadapi senario di mana ia menjadi perlu untuk mendapatkan data antara dua tarikh tertentu, walaupun jika tiada entri untuk tarikh tertentu dalam julat tersebut. Untuk menangani cabaran ini, pendekatan yang popular ialah membuat "jadual kalendar."

Pertimbangkan struktur jadual berikut:

CREATE TABLE data (
  date DATE,
  value INT
);

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

Untuk mendapatkan semula semua data antara '2009-06-25' dan '2009-07-01', pertanyaan berikut boleh digunakan:

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

Walau bagaimanapun, pertanyaan ini akan mengecualikan sebarang tarikh dalam julat yang ditentukan yang tidak mempunyai data yang dikaitkan dengannya. Untuk menangani perkara ini, jadual kalendar digunakan.

Untuk membuat jadual kalendar bagi julat tarikh yang diberikan, langkah berikut boleh diambil:

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';

Jadual cal akan mengandungi semua tarikh antara '2009-06-25' dan '2009-07-01', tetapi tanpa sebarang data yang berkaitan. Untuk mendapatkan semula data yang dikehendaki bersama-sama dengan jurang, gabungan kiri boleh digunakan:

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';

Pertanyaan ini akan mengembalikan semua tarikh dalam julat yang ditentukan, termasuk yang tanpa data, yang akan diwakili dengan nilai NULL untuk lajur nilai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan MySQL untuk Julat Tarikh Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn