Mendapatkan Semua Tarikh dalam Julat Dalam MySQL, Walaupun Dengan Rekod Hilang
Dalam pangkalan data pengguna, seseorang mungkin menghadapi keperluan untuk mencipta graf menggambarkan pertumbuhan pangkalan pengguna. Pertanyaan biasa yang digunakan ialah:
SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC
Sementara pertanyaan ini mendapatkan semula maklumat yang diingini, ia meninggalkan tarikh di mana tiada pengguna didaftarkan. Untuk menangani perkara ini, penyelesaian menggunakan kalendar dinamik boleh dilaksanakan. Begini caranya:
select * from ( select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n1, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n2, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n3, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n4, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n5 ) a where date >'2011-01-02 00:00:00.000' and date < NOW() order by date
Kalendar dinamik ini menjana tarikh dalam julat yang ditentukan, membenarkan tarikh dengan pangkalan pengguna sifar untuk disertakan dalam keputusan. Dengan melaraskan had tarikh dan menggunakan formula pada struktur data khusus anda, anda boleh menjana graf yang menggambarkan pertumbuhan pangkalan pengguna dengan tepat, walaupun semasa tempoh tidak aktif.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh Lengkap dalam MySQL untuk Analisis Pertumbuhan Pengguna, Walaupun dengan Data yang Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!