В MySQL 8.0 вы можете сделать это с помощью рекурсивного запроса:
with recursive cte as (
select '2019-01-01' dt
union all select dt + interval 1 day from cte where dt < '2019-01-05'
)
select dt from cte order by dt
Демонстрация на DB Fiddle :
| dt |
| :--------- |
| 2019-01-01 |
| 2019-01-02 |
| 2019-01-03 |
| 2019-01-04 |
| 2019-01-05 |
В более ранних версиях решения обычно включали таблицу чисел, которая содержит последовательные целые числа, начинающиеся с 0.
create table mynumbers (n int);
insert into mynumbers values(1), (2), (3), (4), (5);
select '2019-01-01' + interval n day dt
from mynumbers n
where '2019-01-01' + interval n day <= '2019-01-05'
Демонстрация
Примечание: если вам нужно сгенерировать очень большой набор данных, решение «таблица чисел» более эффективно, чем рекурсивный запрос.