Вопрос по датам

igor2222
Дата: 28.09.2004 11:52:55
Приходит ко мне один из программеров и спрашивает
Есть ли в оракле функция, которая позволяет определить входит ли один промежуток времени во второй или пересекаются ли они? Т.е. есть Дата11, Дата12, Дата21 и Дата22.
Заставил задуматься...
Может кто поможет?
_kain_
Дата: 28.09.2004 12:03:03
вариантов то не 2 (true/false), а 5. Что в таком случае предпологаемая функция (написать то ее кстати не сложно -- банальное арифметическое выражение) должна возвращать??
igor2222
Дата: 28.09.2004 12:05:20
Написать я и сам могу попробовать. Возвращать естесственно Тру или Фалсе для Второго промежутка относительно первого.
Вопрос в том что они уверенно заявляют Есть СТАНДАРТНАЯ функция!
Это меня с толку и сбило.
Stax
Дата: 28.09.2004 12:38:23
автор
уверенно заявляют


Пусть ответят материально,
сразу уверенности поубавится
softwarer
Дата: 28.09.2004 12:43:00
Ну, в общем такая функция есть и называется правильно примененным оператором between
igor2222
Дата: 28.09.2004 13:04:39
Как на ваш взгляд правильно вхождение в первый BETWEEN оформить? Через EXISTS? Или через ANY? Глаза разбегаются :-)
softwarer
Дата: 28.09.2004 13:14:54
igor2222
Как на ваш взгляд правильно вхождение в первый BETWEEN оформить? Через EXISTS? Или через ANY? Глаза разбегаются :-)

Зависит от того, что именно Вы хотите определить. Существует шесть вариантов расположения этих отрезков друг относительно друга (4!/2/2), и написать оператор, который высчитает точный из этих шести вариантов, видимо, достаточно непросто.

Например, условие непересечения отрезков записывается даже без between: d11 > d22 or d12 < d21.
softwarer
Дата: 28.09.2004 13:18:49
То, что у Вас написано - "входит или пересекается" - это, собственно, отрицание предыдущего результата.
denm
Дата: 28.09.2004 13:20:20
igor2222
Приходит ко мне один из программеров и спрашивает
Есть ли в оракле функция, которая позволяет определить входит ли один промежуток времени во второй или пересекаются ли они? Т.е. есть Дата11, Дата12, Дата21 и Дата22.
Заставил задуматься...
Может кто поможет?


отрезки пересекаются, если greatest(Start1, Start2) <= least(End1, End2)
igor2222
Дата: 28.09.2004 13:46:37
Спасибо!
Вариант с наибольший-наименьший особенно понравился