如何在Microsoft Sql Server 2012中选择2002年到2013年的所有日期

时间:2013-12-03 12:06:54

标签: sql sql-server sql-server-2012 sql-server-2012-express

我找到了这个解决方案,但它限制在2047天。

DECLARE @MinDate DATE, @MaxDate DATE;
SELECT DATEADD(DAY,number,@MinDate) [Date]
    FROM master.dbo.spt_values
    WHERE type = 'P'
    AND number > 0
    AND DATEADD(DAY,number,@MinDate) <= @MaxDate

如何延长最大天数?

1 个答案:

答案 0 :(得分:2)

请尝试使用CTE:

DECLARE @MinDate DATE, @MaxDate DATE;
SELECT @MinDate =DATEADD(year,-11 ,GETDATE()), @MaxDate =getdate();

;WITH Dates AS
(
    SELECT n = @MinDate
    UNION ALL
    SELECT DATEADD(day, 1, n)
    FROM Dates
    WHERE DATEADD(day, 1, n)  <= @MaxDate
)
SELECT n
FROM Dates 
OPTION (MAXRECURSION 0);