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

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

Запрос данных с определенной датой [D7, Access]


Yuri Btr ©   (2005-05-14 16:20:00) 

Ув. мастера, кто нибудь знает возможно ли SQL заставить игнорировать часть поля типа DateTime а именно его часть, где содержится время. Хотелось бы чтобы при запросе например
SELECT ... WHERE DateTimeField=#05/15/2005#
выдавались записи от 15 мая не только со временем 00:00:00, но и с любым другим временем в пределах 15 мая, а то не очень удобно указывать пределы
SELECT ... WHERE (DateTimeField>=#05/15/2005#) AND (DateTimeField<#05/16/2005#)
Возможно ли это сделать или нет?
В моей книжке "UBDERSTANDING SQL" нет примеров работы со временем, только с датой
Заранее спасибо


sniknik   (2005-05-15 11:00:00) [1]

> Судя по Help все таки есть разница - и дата бывает отицательной - это даты меньшие 30.12.1899 - в этом случае Fix корректней.
ну, если у тебя есть такие даты. согласен.

> to Alpine  
> Спасибо, попробую
не стоит. во первых Extract это "из другой оперы", для аксеса тоже самое будет так Year(DateTimeField), Month(DateTimeField), ....

а во вторых это тоже будет вычисляемое значение ... см [5], сравнение с вычисляемым не использует индексы, со всеми вытекающими.


Yuri Btr   (2005-05-15 08:35:00) [2]

to sniknik ©  
Судя по Help все таки есть разница - и дата бывает отицательной - это даты меньшие 30.12.1899 - в этом случае Fix корректней.

to Alpine  
Спасибо, попробую


Alpine   (2005-05-15 01:06:00) [3]

Extract(<Элемент> From <Выражение>) - Из выражения содержащего значение даты или времени извлекается значение соответствующего указанному Элементу. В качестве элемента можно использовать значения : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND.


sniknik   (2005-05-14 21:29:00) [4]

Fix(number) is equivalent to:
Sgn(number) * Int(Abs(number))


sniknik   (2005-05-14 21:26:00) [5]

> Для даты корректней использовать все же Fix.
без разници, дата отрицательной не бывает, а для положительных значений функции равнозначны.


Yuri Btr   (2005-05-14 20:53:00) [6]

to sniknik ©
Спасибо. Для даты корректней использовать все же Fix.
Но ввиду полного перебора записей наверное не пригодится - зачем лишние тормоза программе.


sniknik   (2005-05-14 19:47:00) [7]

> trunc(Date). Но это тормозит запрос.
еще бы. вычисление, выражение с ним не использует индексы, работает только полным перебором таблици.

для access тоже самое Int(DateTimeField), но осторожнее с этим...


ANB   (2005-05-14 17:46:00) [8]

Может не в тему. В Оракле я делаю так : trunc(Date). Но это тормозит запрос.


Yuri Btr   (2005-05-14 17:40:00) [9]

to Johnmen ©  
спасибо за конкретный ответ.


Johnmen   (2005-05-14 16:54:00) [10]

Указание пределов в данном случае вполне легитимно и универсально.


DSKalugin   (2005-05-14 16:49:00) [11]

или преодалей неудобства или не записывай в базу время


Наверх

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