Я храню некоторые интервалы в SQL, например:Проверьте интервал времени, используя SQL условие
id INT
from DATE
to DATE
Как можно проверить, используя только одно условие (если это возможно), если новый интервал конфликт с существующей ?
Примеры:
|-----------| (from 1 to 5)
|-----------| (from 2 to 6)
|--| (from 3 to 4)
|--| (from 7 to 8)
Каждый интервал (в первых трех) имеет некоторый конфликт с двумя другими интервалами ... За исключением последнего, что в одиночку.
-
Эта проверка может быть достигнута с помощью некоторых условий, как:
WHERE (`from` <= $FROM and `to` >= $TO)
Но это только контрольные интервалы, которые содержит новый один ... Не другие интервалы, что имеет некоторые пересечения ИЛИ те, что внутри новый.
Возможно, что-то вроде этого?
WHERE NOT (`from` < $FROM and `to` < $TO) AND NOT (`from` > $FROM and `to` > $TO)
Obs .: Мне нужно найти столкновения, чтобы предупредить пользователя, что этот новый период уже существует или попасть в конфликт с existin один.
Какое представление периодов вы используете, например. закрытые открыть? Иными словами, считаете ли вы (от 1 до 5) 'столкновением с' (от 5 до 6) '? – onedaywhen