Пересекаются ли два интервала
25 декабря 2019
Необходимое и достаточное условие пересечения или не пересечения двух интервалов времени или любых других отрезков используется, чаще всего, при составлении и валидации событий в расписаниях.
Обозначения
begin1
,end1
- начало и конец первого интервала.begin2
,end2
- начало и конец второго интервала.
Интервалы пересекаются
begin1 <= end2 AND end1 >= begin2
SELECT * FROM event WHERE e.begin <= :end AND e.end >= :begin
Интервалы не пересекаются
begin1 > end2 OR end1 < begin2
SELECT * FROM event WHERE e.begin > :end OR e.end < :begin
Комментарии RSS по email OK
почему во втором примере включающее условие?
Александр, в этом случае зависит от трактовки. Но на всякий случай поправил. Спасибо.
А если второй интервал является вложенным подмножеством, то работать не будет же. Или я не прав?
Будет.
Что за минимальное условие? Необходимое, говорят.
Ales, давно по-русски не общался на эту тему :) Исправил.