La estructura de su CTE recursivo está desactivada, y la mitad superior de la unión debe ser un caso base semilla. Luego, la parte recursiva debe agregar un día al valor entrante anterior:
WITH RECURSIVE cte (n, dt) AS (
SELECT 1, '2019-09-20'
UNION ALL
SELECT n + 1, TIMESTAMPADD(DAY, n, '2019-09-20') FROM cte WHERE n <= 5
)
SELECT * FROM cte;
Cabe destacar que usamos TIMESTAMPADD()
aquí para solucionar el problema del INTERVAL
expresión, que en realidad no puede tomar una variable.
Si desea utilizar este enfoque para generar una serie de fechas que coincidan con los valores desde y hasta en su tabla, entonces puede probar una unión:
SELECT
t1.dt
FROM cte t1
INNER JOIN yourTable t2
ON t1.dt BETWEEN t2.from_date AND t2.to_date;
Cuando se usa de esta manera, el CTE recursivo actúa como un calendario mesa.