【原創】SqlServer、利用遞歸查詢、將日期範圍轉換爲日期表

在做項目任務時,需要將一個日期範圍轉換爲日期表。
例如:日期範圍(2017年01月21日~2017年02月20日)、轉換成一日爲單位的日期表,如下。
2017-01-21
2017-01-22
2017-01-23
……
2017-02-19
2017-02-20

直接上SQL,查詢結果如上:

SET LANGUAGE N'Simplified Chinese'
DECLARE @StartDate      NVARCHAR(MAX) = '2017-01-21'
       ,@EndDate        NVARCHAR(MAX) = '2017-02-21'
;
WITH TEMP
AS
(SELECT CAST(@StartDate AS DATE) AS DT
 UNION ALL
 SELECT CAST(DATEADD(DAY,1,DT) AS DATE) FROM TEMP WHERE DATEADD(DAY,1,DT)<=@EndDate
)
SELECT * FROM TEMP
;

另外,生成數字序列1到100的方法,如下:

with t
as
(select 1 as dt
 union all
 select dt+1 from t
 where dt+1<=100
)
select dt from t option(maxrecursion 0)
;

更簡單的方法,如下:

select number from master..spt_values where type='p' and number between 1 and 100
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章