Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Urutan Tarikh dengan Cekap dalam Julat Tertentu?
Jana jujukan tarikh dalam julat yang ditentukan
Soalan:
Bagaimana untuk mendapatkan semua tarikh dengan cekap dalam julat tertentu dan menyimpannya dalam kursor?
Penyelesaian:
Gunakan jadual tarikh
Jadual tarikh menyediakan cara yang mudah dan mudah untuk mendapatkan tarikh. Jika tersedia, gunakan pertanyaan seperti:
<code class="language-sql">DECLARE @MinDate DATE = '20140101', @MaxDate DATE = '20140106'; SELECT Date FROM dbo.Calendar WHERE Date >= @MinDate AND Date < @MaxDate;</code>
Menjana jujukan secara dinamik
Jika anda tidak mempunyai jadual tarikh, anda boleh menggunakan pertanyaan berikut untuk menjana jujukan tarikh:
<code class="language-sql">DECLARE @MinDate DATE = '20140101', @MaxDate DATE = '20140106'; SELECT TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1) Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate) FROM sys.all_objects a CROSS JOIN sys.all_objects b;</code>
Elakkan menggunakan kursor
Untuk meningkatkan prestasi, pertimbangkan untuk menggunakan alternatif berasaskan koleksi sebagai ganti kursor. Contohnya, untuk mendapatkan semula kuantiti bagi item dan tarikh tertentu:
<code class="language-sql">DECLARE @ToDate DATE = '20140428'; SELECT TOP 1 date, it_cd, qty FROM T WHERE it_cd = 'i-1' AND Date <= @ToDate ORDER BY Date DESC;</code>
Atas ialah kandungan terperinci Bagaimana untuk Menjana Urutan Tarikh dengan Cekap dalam Julat Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!