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
Mary-Kate Olsenasal
2025-01-12 10:03:43737semak imbas

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:

<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!

Kenyataan:
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