CREATE FUNCTION dbo.GetDates (@low AS DATE,
@high AS DATE)
RETURNS TABLE
AS
RETURN
WITH L0
AS (SELECT c
FROM ( VALUES ( 1), ( 1) ) AS D (c)),
L1
AS (SELECT 1 AS c
FROM L0 AS A
CROSS JOIN L0 AS B),
L2
AS (SELECT 1 AS c
FROM L1 AS A
CROSS JOIN L1 AS B),
L3
AS (SELECT 1 AS c
FROM L2 AS A
CROSS JOIN L2 AS B),
L4
AS (SELECT 1 AS c
FROM L3 AS A
CROSS JOIN L3 AS B),
L5
AS (SELECT 1 AS c
FROM L4 AS A
CROSS JOIN L4 AS B),
Nums
AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rownum
FROM L5)
SELECT TOP (DATEDIFF(DAY, @low, @high) + 1)
DATEADD(DAY, rownum - 1, @low) AS dt
FROM Nums
ORDER BY rownum ;