Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Senarai Tarikh Dengan Cekap Dalam Julat Tertentu dalam Pangkalan Data?
Penjanaan tarikh dalam julat tarikh pangkalan data
Dalam banyak aplikasi pangkalan data, selalunya perlu menjana senarai tarikh dalam julat tarikh yang ditentukan. Walaupun terdapat pelbagai cara untuk melakukan ini, satu cara yang cekap ialah menggunakan subkueri untuk menjana sejumlah besar tarikh dan kemudian menapis berdasarkan julat yang dikehendaki.
Senario berikut menunjukkan pendekatan ini:
<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>
Arahan:
Subkueri ini menjana sejumlah besar tarikh dengan menggabungkan nilai daripada berbilang lajur. Fungsi curdate()
mengembalikan tarikh semasa dan klausa INTERVAL
menolak daripada tarikh semasa gabungan nombor yang dijana oleh cantuman silang jadual a, b, c dan d. Dengan mengubah nombor ini, pelbagai tarikh boleh dijana.
Luar SELECT
kemudian menapis tarikh yang dijana berdasarkan julat tarikh yang ditentukan. Hasilnya ialah satu set tarikh yang termasuk dalam julat, bermula dengan tarikh terbaharu.
Pertimbangan prestasi:
Penyelesaian ini berfungsi dengan sangat baik walaupun menjana sejumlah besar tarikh. Subkueri menggunakan cantuman silang dan operasi matematik untuk menjana tarikh dengan cekap tanpa bergantung pada gelung atau pengiraan yang kompleks.
Kemudahalihan:
Teknik ini mudah alih merentas kebanyakan pangkalan data dan hanya memerlukan pengubahsuaian kecil untuk menyesuaikan diri dengan sintaks pangkalan data tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Tarikh Dengan Cekap Dalam Julat Tertentu dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!