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:
DECLARE @MinDate DATE = '20140101', @MaxDate DATE = '20140106'; SELECT Date FROM dbo.Calendar WHERE Date >= @MinDate AND Date < @MaxDate;
Menjana jujukan secara dinamik
Jika anda tidak mempunyai jadual tarikh, anda boleh menggunakan pertanyaan berikut untuk menjana jujukan tarikh:
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;
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:
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;
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!