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

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

Проблема выборки данных с датой [D6, Access]


lmax ©   (2002-11-02 01:19:00) 

Мастера, подскажите плз! Нужно выбрать данные, поле date1 которых находится между datefrom и dateto. База данных на Аксессе, выборка данных производится с помощью ADOQuery. Проблема: при запросе типа:
select * from table1 where date1>10-12-2002 отображается вся таблица, без фильтрации, хотя при
select * from table1 where date1>Now() выборка производится на Ура. В чём трабл не пойму. (При заключении даты в кавычки "10-12-2002" при выполнении запроса выдаётся ошибка Data type mismatch in criteria expression.
Зараннее спасибо!


BorisUK   (2002-11-04 09:10:00) [1]

Работаю с ORACL
там делать надо преобразование - функция To_date()
Например TO_DATE("02-02-1995","MM-DD-YYYY"),
Подозреваю что чтото такое должно быть и тут - хотя признаюсь в Аксесе не работал по причине небольшого недоверия к нему :)


BlackTiger   (2002-11-02 14:41:00) [2]

Во-первых, есть такое слово BETWEEN что-то AND что-то.

Во-вторых, Аксесс ждет либо
SELECT * FROM Table WHERE [Date Field] BETWEEN #5/23/2002# AND #12/31/2002#
либо
SELECT * FROM Table WHERE [Date Field] BETWEEN CDate("23.05.2002") AND CDate("31.12.2002")

В первом варианте НЕОБХОДИМО использовать ТОЛЬКО такой формат даты независимо от регионального формата даты. Во втором варианте он сам попытается сконвертировать дату. Есть еще вариант с форматированием всех дат в формат YYYYMMDD, но это будет немного тормозить при большом количестве данных.


ЮЮ   (2002-11-02 09:58:00) [3]

date1>10-12-2002 <=> date>-2004, т.е. на 2004 дня раньше, чем 31.12.1899, поэтому все записи и показывает


Andriano   (2002-11-02 09:24:00) [4]

Да, sniknik прав.
Ты синтаксис-то новый не предумывай.
Это стандартный SQL. Должны быть разделители.
А ADOQuery находит ошибку в условии и попросту игнорирует условие.


sniknik   (2002-11-02 08:01:00) [5]

"трабл?" в передаче даты Аксесу он ждет чтото вроде такого
select * from table1 where date1>#10/12/2002#

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


Наверх

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