Как временно заполнить таблицу датами между двумя параметрами даты включительно? - PullRequest
0 голосов
/ 10 июля 2019

Мне нужно заполнить временную таблицу датами между двумя параметрами даты, включая, скажем, начальная дата 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 Ответ

1 голос
/ 10 июля 2019

Замените 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

)

и используя предложенное преобразование здесь :

SELECT FORMAT(myDate, 'yyyy-MM')
FROM cte
OPTION (MAXRECURSION 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...