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
Lepaskan: 2025-01-23 17:22:13
asal
219 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan