Gunakan SQL untuk menjana senarai tarikh dalam julat tarikh
Dalam analisis dan pengurusan data, selalunya perlu menjana senarai tarikh dalam julat tarikh yang ditentukan. Ini boleh dicapai melalui pertanyaan SQL yang cekap.
Salah satu cara ialah menggunakan subkueri untuk menjana jujukan tarikh. Sebagai contoh, pertanyaan berikut menjana senarai tarikh untuk 10,000 hari yang lalu:
<code class="language-sql">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;</code>
Untuk menjana senarai tarikh dalam julat tarikh tertentu, anda boleh menapis tarikh menggunakan klausa WHERE:
<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 ... -- 上述子查询 ) a WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24';</code>
Pertanyaan ini akan mengembalikan output berikut:
<code>Date ---------- 2010-01-24 2010-01-23 2010-01-22 2010-01-21 2010-01-20</code>
Prestasi kaedah ini sangat baik, mengambil masa kurang dari satu saat untuk menjana 100,000 kurma. Ia juga sangat mudah alih dan serasi dengan kebanyakan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Tarikh Dalam Julat Tertentu Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!