微软BI开拓者

首页 » 数据库专区 » SQL Server开发 » 利用CTE递归产生日期
拓狼 - 3/13/2010 6:39:00 AM

DECLARE @EndDate datetime

DECLARE @StartDate datetime

SET @StartDate  = '2010-1-1'

SET @EndDate  = '2010-12-31'

;WITH Dates(DATEPARAM) AS

(

SELECT @StartDate AS datetime

UNION ALL

SELECT DATEADD(DAY, 1, DATEPARAM)

FROM Dates

WHERE DATEPARAM < @EndDate

)

SELECT *

FROM Dates

order by 1

OPTION (MAXRECURSION 366)

seawater001 - 3/18/2010 1:22:00 AM
DECLARE @EndDate datetime
DECLARE @StartDate datetime
SET @StartDate  = '2010-1-1'
SET @EndDate  = '2010-12-31';

SELECT DISTINCT DATEADD(DAY, NUMBER, @StartDate),NUMBER from master..spt_values
WHERE NUMBER BETWEEN 0 and DATEDIFF(DAY,@StartDate,@eNDdATE)
1
查看完整版本: 利用CTE递归产生日期