Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Julat Tarikh dengan Cekap dalam SQL?

Bagaimana untuk Menjana Julat Tarikh dengan Cekap dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-23 17:22:13174semak imbas

How to Efficiently Generate a Date Range in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn