Лично я предпочитаю Tally Table rCTE для таких вещей;для больших наборов данных таблица подсчета имеет тенденцию быть намного быстрее:
DECLARE @StartDate date = '20181201',
@EndDate date = '20181231';
WITH N AS (
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS (
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1 AS I
FROM N N1, N N2, N N3, N N4) --10000 rows
SELECT DATEADD(DAY, T.I, @StartDate)
FROM Tally T
WHERE DATEADD(DAY, T.I, @StartDate) <= @EndDate;