De structuur van uw recursieve CTE is uitgeschakeld en de bovenste helft van de unie moet een seed-basecase zijn. Dan zou het recursieve deel een dag moeten optellen bij de vorige inkomende waarde:
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;
Let op, we gebruiken TIMESTAMPADD()
hier om het probleem van de INTERVAL
te omzeilen expressie, die niet echt een variabele kan hebben.
Als u deze aanpak wilt gebruiken om een reeks datums te genereren die overeenkomt met de waarden van en tot in uw tabel, dan kunt u een join proberen:
SELECT
t1.dt
FROM cte t1
INNER JOIN yourTable t2
ON t1.dt BETWEEN t2.from_date AND t2.to_date;
Bij gebruik op deze manier fungeert de recursieve CTE als een kalender tafel.