Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
ВнизSQL запрос, бд-MS Access, по дате Найти похожие ветки
← →
vantage10 (2003-05-25 18:44) [0]Есть след. проблема:
Используется ADOQuery, БД-Access2000, Delphi7, Win2000
Все запросы работают, но запрос по дате и времени пишет несоотвествие типов данных.
Пробовал дату писать #04/03/2003# в таком формате ошибка не вылазит но и записей не выводит хотя они существуют в базе.
← →
sniknik (2003-05-25 20:49) [1]два варианта,
первый вместо #04/03/2003# нужно #03/04/2003#
второй в базе значение со временем и нужно по другому запрос составить или с > < (больше 4-го и меньше 5-го) или сравнивать так WHERE Int(DateField)=#04/03/2003#
(возможно оба варианта пересекаются)
← →
HelDet (2003-05-26 07:45) [2]Есть стандартные функции Year, Date, Month.
Попробуй:
SELECT * FROM Table WHERE Year(Table.DataField)=2003 AND Date(Table.DataField)=03 AND Month(Table.DataField)=04
Примерно так. Если я ошибся в написании стандартных функций, то посмори их в справке по Access. Писал по памяти.
В SQL американский формат даты mm.dd.yyyy
← →
vantage10 (2003-05-27 18:23) [3]>shiknik
Огромное спасибо, WHERE Int(DateField)=#04/03/2003# - в таком виде заработало!!!
>HelDet
Что-то не заработало, а Access не стоит и под рукой нет, при возможности посмотрю.
← →
sniknik (2003-05-27 19:09) [4]vantage10 (27.05.03 18:23)
>>HelDet
> Что-то не заработало, а Access не стоит и под рукой нет, при возможности посмотрю.
тогда замени Year, (Date)-> на -> Day , Month.
если с отсечением времени Int(DateField) заработало то дело было в нем (время не учитывал, а не перепутал день/месяц)
а если к тому же это поле с индексом (DateField) то советую переделать запрос на использование > < или between DateField #04/03/2003# and #04/04/2003#. потому как в вычисляемых условиях индексы не используются (будет отрабатывать на порядок быстрей).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c