我有一个要求,即在输入年份参数时,我必须显示今年的所有月份。
例如,如果我输入2016,则应显示截至9月的所有月份。
如何实现这一目标?任何想法都将受到高度赞赏。
答案 0 :(得分:2)
使用递归CTE很容易:
with m as (
select datefromparts(year(getdate()), 1, 1) as mm
union all
select dateadd(month, 1, m.mm)
from m
where m.mm < getdate()
)
select m.*
from mm;
我不清楚该参数的用途。这可以从今年开始。
答案 1 :(得分:1)
使用以下脚本。
;with months (date)
AS
(
SELECT cast(@year+'-01-01' as date)
UNION ALL
SELECT DATEADD(month,1,date)
from months
where DATEADD(month,1,date)<= case when @year=YEAR(getdate()) THEN CAST(getdate() as date) ELSE cast(@year+'-12-31' as date) END
)
select Datename(month,date) [Month] from months
输出: