A_Modestov
@A_Modestov

Как осуществить выборку повторяющихся событий из базы?

Добрый день всем. Задача такая:
Имеется модель Event с полями start_date, end_date, repeat. Event может быть повторяющимся каждый день, месяц, год (инфа об этом хранится в поле repeat). Подскажите пожалуйста, как сформулировать запрос к базе, чтобы получить события из интервала, в т.ч созданные не в этот интервал, но предусматривающие повторяемость?
Пример: Событие создано на 1.05.2017, повторяется каждый месяц. Шлю запрос на даты 1.06.2017-30.06.2017, в результате должен получить данное событие в выборке, как повторяющееся каждый месяц.
Благодарю за помощь.
  • Вопрос задан
  • 502 просмотра
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Если в лоб:
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
);

Как сделать быстро сходу не сообразил.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы