如何使用两个日期参数之间(包括2个日期参数)的日期临时填充表格?

时间:2019-07-10 08:02:49

标签: sql-server tsql date datetime

我需要填充一个临时表,其中的日期介于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

1 个答案:

答案 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)