我需要填充一个临时表,其中的日期介于2个日期参数之间(包括2个日期参数),假设开始日期为2014-01,并且存在结束日期。
到目前为止,我已经做到了,但是我只需要“年月”格式。
不需要任何时间。
declare @StartDate date = '2014-01-01';
declare @EndDate date = getdate();
;WITH cte AS (
SELECT @StartDate AS myDate
UNION ALL
SELECT DATEADD(day,1,myDate) as myDate
FROM cte
WHERE DATEADD(day,1,myDate) <= @EndDate
)
SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)
实际结果
2014-01-01
2014-01-02
预期结果
2014-01
2014-02
2014-03
答案 0 :(得分:1)
将day
替换为month
,如下所示:
declare @StartDate date = '2014-01-01';
declare @EndDate date = getdate();
;WITH cte AS (
SELECT @StartDate AS myDate
UNION ALL
SELECT DATEADD(month,1,myDate) as myDate
FROM cte
WHERE DATEADD(month,1,myDate) <= @EndDate
)
并使用建议的转换here:
SELECT FORMAT(myDate, 'yyyy-MM')
FROM cte
OPTION (MAXRECURSION 0)