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