WITH numbers AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM numbers WHERE num < 30 ) SELECT CONVERT(char(10),DATEADD(day,-(num-1),GETDATE()),120) AS date FROM numbers; WITH dates AS ( SELECT CAST('2022-01-01' AS DATE) AS date UNION ALL SELECT DATEADD(day, 1, date) FROM dates WHERE date < '2022-01-31' ) SELECT date FROM dates;