Чтобы динамически получить даты в диапазоне дат с помощью SQL, вы можете сделать это (пример в mysql):
Создать таблицу для хранения чисел от 0 до 9.
CREATE TABLE ints ( i tinyint(4) );
insert into ints (i)
values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
Запустите запрос так:
select ((curdate() - interval 2 year) + interval (t.i * 100 + u.i * 10 + v.i) day) AS Date
from
ints t
join ints u
join ints v
having Date between '2015-01-01' and '2015-05-01'
order by t.i, u.i, v.i
Будет сгенерировано все даты в период с 1 января 2015 г. по 1 мая 2015 г.
Output
2015-01-01
2015-01-02
2015-01-03
2015-01-04
2015-01-05
2015-01-06
...
2015-05-01
Запрос присоединяется к таблице ints 3 раза и получает инкрементное число (от 0 до 999). Затем он добавляет это число как дневной интервал, начинающийся с определенной даты, в данном случае это дата 2 года назад. Любой диапазон дат от 2 лет назад и до 1000 дней вперед может быть получен с примером выше.
Чтобы сгенерировать запрос, который генерирует даты для более чем 1000 дней, просто присоединитесь к таблице значений еще раз, чтобы обеспечить диапазон до 10 000 дней и т. Д.