Generare una serie di date con MySQL

Ti serve una query che generi un elenco di tutte le date presenti nell'intervallo [data inizio, data fine] su MySQL ?

A partire dalla versione 8.0 in MySQL sono state implementate le CTE (Common Tables Expressions). Queste espressioni sono utilizzabili anche in modalità ricorsiva ed è in questo modo che possiamo generare l'elenco di date in un intervallo definito.

Esempio: generare tutte le date tra il 1 Gennaio 2019 ed il 31 Gennario 2019 (estremi inclusi).
QUERY


WITH RECURSIVE date_range(d) AS (
	SELECT '2019-01-01' AS giorno
    UNION ALL
    SELECT date_add(d, interval 1 day) AS giorno
    FROM date_range
    WHERE d<'2019-01-31'
)
SELECT *
FROM date_range

RISULTATO

2019-01-01
2019-01-02
...
2019-01-30
2019-01-31