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

  • Автор темы Автор темы SkisoR
  • Дата начала Дата начала

SkisoR

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

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

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

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

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


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

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

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

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

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

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

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

тоже самое и для второго...
ну а дальше тупо сравнением...
 
ось времени ЦИКЛИЧЕСКАЯ
круто =)))

-~{}~ 20.11.07 17:35:

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

она покругу идет, и нигде во времени она не находиться, просто представь часы....
 
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.
 
смотри пример:

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 .. ответ неверно((
 
И мы типа должны вам лекции по математике для дошкольников читать ?
 
Сверху