Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Julat Tarikh dengan Cekap dalam SQL?
Kemahiran penjanaan julat tarikh SQL
Terdapat banyak cara untuk menjana senarai tarikh dalam julat tertentu dalam SQL. Artikel ini mengambil penjanaan jujukan tarikh dari '2010-01-20' hingga '2010-01-24' sebagai contoh untuk memperkenalkan penyelesaian yang cekap.
Kaedah ini menggunakan subkueri untuk menjana koleksi tarikh yang lengkap. Melalui gabungan empat gelung bersarang, subkueri boleh menjana jujukan tarikh sehingga 10,000 hari dengan cekap dan boleh dilanjutkan dengan mudah kepada julat tarikh yang lebih panjang.
<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>
Kami kemudiannya menapis senarai tarikh yang dijana untuk mengekstrak tarikh dalam julat sasaran:
<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 (...) as a ) a where a.Date between '2010-01-20' and '2010-01-24'</code>
Kelebihan pendekatan ini ialah: tiada gelung, prosedur tersimpan atau jadual sementara diperlukan, cekap dan mudah alih kepada berbilang platform pangkalan data. Menjana 10,000 hari tarikh mengambil masa kurang daripada 0.01 saat, dan prestasi masih cemerlang walaupun apabila menjana tarikh kira-kira 100,000 hari.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!