Итак, у вас есть два интервала дат.Один от input_date
до input_date + 6
(примечание: 6, а не 7; вы тоже учитываете input_date
!), А другой от start_date
до end_date
.И вы хотите написать условие, которое означает, что два интервала перекрываются (имеют непустое пересечение).
Два интервала перекрывают , а не , если один полностью предшествует другому.Таким образом, последний день одного интервала должен быть строго меньше, чем первый день другого интервала.Это может произойти одним из двух способов (в зависимости от , который интервал идет первым).Условие будет выглядеть так:
input_date + 6 < start_date OR end_date < input_date
Итак, это отрицание того состояния, которое вы хотите.Примените к этому логический оператор NOT
;таким образом, условие становится:
input_date + 6 >= start_date AND end_date >= input_date