![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбор всех значений, которые принадлежат интервалу времени
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'
Так что ли?