Определение вхождения во временной интервал

SkisoR

Новичок
Определение вхождения во временной интервал

есть интервал времени: HH:MM-HH:MM (HH - часы, MM - минуты) - храниться как два числа (кол-во минут)

и есть второй интервал в таком же виде

надо определить входит ли второй интервал в первый

(может быть и такой: 23:00-01:00 .. т.е. в виде 2х чисел так: 1380,60)


сложность заключаеться в том, что 1й храниться в базе, а определять входит 2й или нет надо в запросе... т.е. нужна "формула" кот. реально вставить в sql-запрос
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
реально вставить в sql-запрос
как пробовали?

Данные нужно хранить в нрмальном формате (time). А не парить себе мозги "Как сохранить данные", а потом "Как достать данные"
 

SkisoR

Новичок
Автор оригинала: Mr_Max
как пробовали?

Данные нужно хранить в нрмальном формате (time). А не парить себе мозги "Как сохранить данные", а потом "Как достать данные"
ну дело не в формате же???

тогда вопрос такой: как определить, если данные в формате TIME ??
 

ZigFreeD

Новичок
SkisoR
а почитать мануал слабо? Хотя бы узнай что выдает функция time()... а уж когда узнаешь, проблем с определением вхождения даты в определенный промежуток времени не составит труда... если конечно ты ходил в школу в первый класс...
 

SkisoR

Новичок
вы немонимаете о чем речь....

ось времени ЦИКЛИЧЕСКАЯ,.. поетому начало может быть больше чем конец

2зигфрид: если ето так легко то почему не напишеш?
 

ZigFreeD

Новичок
сори невнимательно прочитал...

Если тебе уж так не втерпеж своим метожом хранить данные..то вычислить разницу лучше всего через тот же самый time() вычитаешь из большего меньшее и узнаешь разницу между ними в секундах...

тоже самое и для второго...
ну а дальше тупо сравнением...
 

StUV

Rotaredom
ось времени ЦИКЛИЧЕСКАЯ
круто =)))

-~{}~ 20.11.07 17:35:

[off]
реально снесло башню... туплю пол-часа и пытаюсь представить "циклическую ось", и где во времени она находится...
[/off]
 

SkisoR

Новичок
ну извините, .. если нормальным языком непонимаете

она покругу идет, и нигде во времени она не находиться, просто представь часы....
 

dimagolov

Новичок
SkisoR
имхо наиболее рациональное решение такое.
если конец интервала перепрыгивает через сутки, то хранить и обрабатывать его надо добавляя к нему 24 часа.

тогда задача сведется к тривиальной - убедиться что оба конца 2-го интервала попадают в первый. 4 операции сравнения

p.s. ну если проверять на интервал который полностью попадает в начало 2-х суток, то проверяем 2-й раз для искомого интервала начало и конец +24

хранимый интервал A B
искомый C D

if C > D then D = D + 24
if A < C && D < B || A < C+24 && D+24 < B then true;

5 операций, а не 4 как я написал раньше, но в самом запросе таки 4.
 

SkisoR

Новичок
смотри пример:

1й: 22:00-02:00
2й 00:30-01:30
определить входит ли 2й в 1й

твое решение:

1й - конец перепрыгивает через сутки => прибавляем,. получаем: 22:00-26:00

2й - конец не перепрыгивает => не прибавляем,. получаем: 00:30-01:30

проверяем: 00:30-01:30 не входит 22:00-26:00 .. ответ неверно((
 

SkisoR

Новичок
причем тут секунды? надо математически сначала решить,..
 

cDLEON

Онанист РНРСlub
И мы типа должны вам лекции по математике для дошкольников читать ?
 
Сверху