with A as
(
select 1 NUM
union all
select NUM+1 from A
where NUM<20
)
select * from A
Option(MAXRECURSION 100) --設置最大的遞歸次數
with CTE as
(
select cast('2000-1-1' as date) dt
union all
select dateadd(day,1,dt) from CTE
where dt<getdate()
)
select * from CTE
Option(MAXRECURSION 20000)
with CTE as
(
select cast('2000-1-1' as date) DateID
,year( cast('2000-1-1' as date)) [Year]
,month(cast('2000-1-1' as date))[Month]
,day(cast('2000-1-1' as date))[Day]
,CASE DATEPART(QUARTER, cast('2000-1-1' as date))
WHEN 1 THEN N'第一季度'
WHEN 2 THEN N'第二季度'
WHEN 3 THEN N'第三季度'
ELSE N'第四季度' END AS [Quarter]
,CASE DATEPART(W, cast('2000-1-1' as date))
WHEN 1 THEN N'星期一'
WHEN 2 THEN N'星期二'
WHEN 3 THEN N'星期三'
WHEN 4 THEN N'星期四'
WHEN 5 THEN N'星期五'
WHEN 6 THEN N'星期六'
ELSE N'星期日' END AS [WeekDay]
,N'第'+CAST( DATEPART(WEEK, cast('2000-1-1' as date)) AS VARCHAR(2))+'周' AS [Week]
union all
select dateadd(day,1,DateID)
,year(dateadd(day,1,DateID))
,month(dateadd(day,1,DateID))
,day(dateadd(day,1,DateID))
,CASE DATEPART(QUARTER,dateadd(day,1,DateID))
WHEN 1 THEN N'第一季度'
WHEN 2 THEN N'第二季度'
WHEN 3 THEN N'第三季度'
ELSE N'第四季度' END AS [Quarter]
,CASE DATEPART(W, dateadd(day,1,DateID))
WHEN 1 THEN N'星期一'
WHEN 2 THEN N'星期二'
WHEN 3 THEN N'星期三'
WHEN 4 THEN N'星期四'
WHEN 5 THEN N'星期五'
WHEN 6 THEN N'星期六'
ELSE N'星期日' END AS [Week]
,N'第'+CAST( DATEPART(WEEK, dateadd(day,1,DateID)) AS VARCHAR(2))+'周' AS [Week]
from CTE
where DateID<cast(getdate() as date)
)
select * from CTE
Option(MAXRECURSION 7000) --設置最大的遞歸次數,如果沒有這一段,默認最大遞歸100次
最後展示一下最終結果:
有不明白的地方可以給我留言,或者加我VX:838599867,有問題或者新技術可以一起研究哈^_^