我想编写查询,公用表表达式语句来打印提供的开始日期和结束日期之间的所有日期?
例如: startDate:2014年1月15日 结束日期:2014年2月15日
答案 0 :(得分:2)
Declare @start date='2014-01-15'
Declare @Enddate date='2014-02-15'
;with CTE as
(select @start dates
union all
select DATEADD(day,1,dates) from cte where dates<@Enddate
)
select * from cte
答案 1 :(得分:1)
DECLARE @mindate DATETIME
DECLARE @maxdate DATETIME
DECLARE @diff INT
SET @maxdate = '2014-02-15'
SET @mindate = '2014-01-15'
SET @diff = DATEDIFF(DAY, @mindate,@maxdate)
;WITH cte(dt,level)
AS
(
SELECT @mindate AS dt, 0 AS level
UNION ALL
SELECT DATEADD(day,1,cte.dt),level + 1 from cte WHERE level < @diff
)
SELECT dt FROM cte
option (maxrecursion 32767)
如果开始日期和结束日期相隔超过100天,则需要选项maxrecursion
检查SQLFiddle上的查询:http://www.sqlfiddle.com/#!3/fd09f/10