Как осуществить выборку повторяющихся событий из базы?
Добрый день всем. Задача такая:
Имеется модель Event с полями start_date, end_date, repeat. Event может быть повторяющимся каждый день, месяц, год (инфа об этом хранится в поле repeat). Подскажите пожалуйста, как сформулировать запрос к базе, чтобы получить события из интервала, в т.ч созданные не в этот интервал, но предусматривающие повторяемость?
Пример: Событие создано на 1.05.2017, повторяется каждый месяц. Шлю запрос на даты 1.06.2017-30.06.2017, в результате должен получить данное событие в выборке, как повторяющееся каждый месяц.
Благодарю за помощь.
select ... from events where exists (
select 1 from generate_series(events.start_date, :target_end_date, events.repeat) as d(rep_date)
where rep_date between :target_date and :target_end_date
);