Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выбор всех значений, которые принадлежат интервалу времени


DelphiN! ©   (2006-02-02 09:59:00) 

Есть таблица, с полями
|Вряемя начала|  |Время окончания|
1)  01.01.06 10:30      01.01.06 10.40
2)  01.01.06 10:00      01.01.06 11:40
3)  01.01.06 12:00      01.01.06 22:00

Как выбрать записи, которые входят в промежуток от 01.01.06 10:00 до  01,01,06 10:50, тоесть записи 1,2

Чегото я сам сообразить не могу ...


DelphiN!   (2006-02-02 11:32:00) [1]


>  [19] ЮЮ ©   (02.02.06 11:26)


И вам спасибо, на обед сходил а тут уже столько написали за это время, вот и заметил последнего :)


ЮЮ   (2006-02-02 11:26:00) [2]


> Плохиш ©   (02.02.06 11:20) [17]


Уже было в [2]. Требуются оригинальные версии :)


DelphiN!   (2006-02-02 11:26:00) [3]


>  [17] Плохиш ©   (02.02.06 11:20)


Действительно, вроде так. У меня голова просто раскалывается, температура, и сам сообразить просто не могу :(


Плохиш   (2006-02-02 11:20:00) [4]


> DelphiN! ©   (02.02.06 11:17) [15]

(<Вряемя начала> <= :TO) and (<Время окончания> >= :FROM)


ЮЮ   (2006-02-02 11:18:00) [5]


> Fay ©   (02.02.06 11:02) [13]
> См. [1]

Так в [1] твои предположения.

Пока автор не скажет, нужны ли ему записи,
A) со временем окончания в интервале, а со временем начала - раньше начала интервала
Б)  со временем начала - раньше начала интервала, и со времением окончания - позже конца  интервала

точное услови написать невозможно.


DelphiN!   (2006-02-02 11:17:00) [6]

Извеняюсь за не точность, я хочу чтобы интервал не входил в промежуток полнойстю, а хотябы касался его, 1-я запись входит в промежуток полнойстю, а вторая входит в промежуток лишь частично, поэтому она и попала под условие, 3-я же запись никак не касается промежутка, потому под условие она не подошла.


Val   (2006-02-02 11:16:00) [7]

ок. ждем поправок автора.


Fay   (2006-02-02 11:02:00) [8]

2 ЮЮ ©   (02.02.06 10:45) [10]
См. [1]

2 Val ©   (02.02.06 10:59) [12]
> а почему or, а не and? ведь автор хочет, чтобы обе даты входили в заданный промежуток.
Из чего это следует?


Val   (2006-02-02 10:59:00) [9]

[7] Fay ©   (02.02.06 10:31)
а почему or, а не and? ведь автор хочет, чтобы обе даты входили в заданный промежуток.


Nikolay M.   (2006-02-02 10:58:00) [10]


> 2)  01.01.06 10:00      01.01.06 11:40
>
> Как выбрать записи, которые входят в промежуток от 01.01.
> 06 10:00 до  01,01,06 10:50, тоесть записи 1,2


Вторая "запись" не входит в этот промежуток. Хотелось бы заслушать от докладчика, что он подразумевает под "вхождением" интервалов.


ЮЮ   (2006-02-02 10:45:00) [11]


> Fay ©   (02.02.06 10:17) [3]



> Пересекает, это когда хотя бы одна из дат лежит в заданном
> диапазоне


А где лежит вторая - не важно. У автора во второй записи |Время окончания| лежит далеко за пределами заданного интнрвала, но она его интересует, хотя он называет такое положение вещей  "входят в промежуток"


Fay   (2006-02-02 10:42:00) [12]

2 Val ©   (02.02.06 10:37) [8]
> я имел ввиду не поля таблицы, а задаваемые параметры :)
А в этом как раз нет никакой необходимости, мы считаем разработчика человеком психически здоровым. 8)


Val   (2006-02-02 10:37:00) [13]

>[6] Fay ©   (02.02.06 10:28)
ээ..:) я имел ввиду не поля таблицы, а задаваемые параметры :)


Fay   (2006-02-02 10:31:00) [14]

2 Sergey13 ©   (02.02.06 10:22) [4]
Я бы сказал
where
 ([Вряемя начала] between :From and :To)
 or ([Время окончания] between :From and :To)


Fay   (2006-02-02 10:28:00) [15]

2 Val ©   (02.02.06 10:24) [5]
Ага, а ещё типы данных должны быть совместимыми 8)


Val   (2006-02-02 10:24:00) [16]

>[1] Fay ©   (02.02.06 10:03)
к этому, наверное, нужно еще и третье условие, что
"Время начала" <= "Времени окончания"


Sergey13   (2006-02-02 10:22:00) [17]

where (:From between [Вряемя начала] and |Время окончания|)
OR (:To between [Вряемя начала] and |Время окончания|)
OR ((:From<[Вряемя начала]) and (:To>[Вряемя окончания]))


Fay   (2006-02-02 10:17:00) [18]

2 ЮЮ ©   (02.02.06 10:14) [2]
Пересекает, это когда хотя бы одна из дат лежит в заданном диапазоне


ЮЮ   (2006-02-02 10:14:00) [19]

2)  01.01.06 10:00      01.01.06 11:40
не "входит в промежуток", а пересекает его

входит ли в промежуток
4)  01.01.06 09:30      01.01.06 10:10 ?
4)  01.01.06 09:30      01.01.06 11:00 ?

Если да, то

 NOT ( ([Время окончания]  < :From)  OR  ([Вряемя начала]  > :To) )
что эквивалентно
   ([Время окончания]  >= :From)  AND  ([Вряемя начала]  <= :To) )

где :From и :To - заданный период


Fay   (2006-02-02 10:03:00) [20]

> тоесть записи 1,2
Т.е. записи, для которых выполняется
 where [Вряемя начала] between '01.01.06 10:00' and '01.01.06 10:50'

Так что ли?


Наверх

Титульная страница Поиск, карта сайта Написать письмо