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!