在做項目任務時,需要將一個日期範圍轉換爲日期表。
例如:日期範圍(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