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
Lepaskan: 2024-12-16 18:52:22
asal
588 orang telah melayarinya

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);
Salin selepas log masuk

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';
Salin selepas log masuk

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';
Salin selepas log masuk

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';
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan