<rmcreative>

RSS

Пересекаются ли два интервала

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

  1. №11602
    Александр
    Александр 25 дек. 2019 г., 17:11:59

    почему во втором примере включающее условие?

  2. №11603
    Sam
    Sam 25 дек. 2019 г., 17:59:07

    Александр, в этом случае зависит от трактовки. Но на всякий случай поправил. Спасибо.

  3. №11605
    Ильдар
    Ильдар 26 дек. 2019 г., 10:23:04

    А если второй интервал является вложенным подмножеством, то работать не будет же. Или я не прав?

  4. №11606
    Sam
    Sam 26 дек. 2019 г., 19:24:00

    Будет.

  5. №11607
    Ales
    Ales 30 дек. 2019 г., 12:25:21

    Что за минимальное условие? Необходимое, говорят.

  6. №11608
    Sam
    Sam 30 дек. 2019 г., 15:57:47

    Ales, давно по-русски не общался на эту тему :) Исправил.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.