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

Bagaimana untuk Menjana Urutan Tarikh dengan Cekap dalam Julat Tertentu?

Mary-Kate Olsen
Lepaskan: 2025-01-12 10:03:43
asal
779 orang telah melayarinya

How to Efficiently Generate a Sequence of Dates within a Given Range?

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

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

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

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!

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