Jana tarikh daripada julat tarikh
Tugas biasa dalam analisis data ialah mengekstrak tarikh tertentu daripada julat tarikh tertentu. Sebagai contoh, anda mungkin perlu mendapatkan semula tarikh dari "2010-01-20" hingga "2010-01-24".
Penyelesaian tanpa gelung atau jadual sementara
Untuk mencapai ini tanpa menggunakan gelung, prosedur atau jadual sementara, kami boleh memanfaatkan subkueri untuk menjana urutan tarikh:
<code class="language-sql">SELECT a.Date FROM ( SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a)) DAY AS Date FROM (SELECT 0 AS a 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) AS a CROSS JOIN (SELECT 0 AS a 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) AS b CROSS JOIN (SELECT 0 AS a 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) AS c CROSS JOIN (SELECT 0 AS a 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) AS d ) a WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24'</code>
Subkueri ini menjana siri tarikh yang merangkumi kira-kira 10,000 hari. Anda boleh melaraskan bilangan hari dengan mengembangkan atau mengurangkan julat dalam subkueri.
Output
Pertanyaan mengembalikan tarikh berikut:
<code>Date ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
Nota Prestasi
Prestasi pertanyaan ini sangat baik, berjalan dalam 0.0009 saat untuk julat 5 hari. Walaupun dengan julat 100,000 hari, ia selesai hanya dalam 0.0458 saat.
Keserasian dan Kemudahalihan
Teknologi ini serasi dengan kebanyakan pangkalan data dengan hanya pelarasan kecil. Sebagai contoh, anda mungkin mahu menggantikan fungsi CURDATE() dengan fungsi yang sepadan dalam pangkalan data khusus anda.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Tarikh Dalam Julat Tertentu Tanpa Gelung atau Jadual Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!