首頁 > 資料庫 > mysql教程 > 如何有效率地產生給定範圍內的日期序列?

如何有效率地產生給定範圍內的日期序列?

Mary-Kate Olsen
發布: 2025-01-12 10:03:43
原創
766 人瀏覽過

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

在指定範圍內產生日期序列

問題:

如何有效率地取得指定範圍內的所有日期,並將其儲存在遊標中?

解:

使用日期表

日期表提供了一種簡單直接的方法來檢索日期。如果可用,請使用類似以下的查詢:

<code class="language-sql">DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  Date
FROM    dbo.Calendar
WHERE   Date >= @MinDate
AND     Date < @MaxDate;</code>
登入後複製

動態產生序列

如果沒有日期表,可以使用下列查詢產生日期序列:

<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>
登入後複製

避免使用遊標

為了提高效能,請考慮使用基於集合的替代方案來代替遊標。例如,要檢索特定項目和日期的數量:

<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>
登入後複製

以上是如何有效率地產生給定範圍內的日期序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板