Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизИспользую TADOQuery1.Запрос SELECT * FROM DB WHERE DB.DATA=01/06 Найти похожие ветки
← →
casper (2004-02-16 21:45) [0]Люди добрые помогите пожалуйста!!!
Использую TADOQuery1.Запрос "SELECT * FROM DB WHERE DB.DATA=01/06/2004" ничего не выдает хотя у меня в базе точно есть такие записи. в чём проблема.Провайдер JET4.0.
← →
Fay © (2004-02-16 22:16) [1]Это mm/dd/yyyy
← →
casper (2004-02-16 22:31) [2]Вообще я задаю ShortDateFormat:="dd/mm/yyyy" при создании формы.
Пробовал писать ShortDateFormat:="mm/dd/yyyy" и "06/01/2004"вместо "01/06/2004" . Не помогает. Может я что-то не так понял.
← →
sniknik © (2004-02-16 23:04) [3]так
SELECT * FROM DB WHERE DATA=#01/06/2004#
хотя лутше всеже через параметр.
← →
ЮЮ © (2004-02-17 05:24) [4]ShortDateFormat только определяет формат отображения данных на клиенте и никак не зависит на вид SQL предложения. Параметры, параметры и только параметры
← →
SPIRIT © (2004-02-17 07:02) [5]01.06.2004
← →
casper (2004-02-17 12:03) [6]Спасибо большое Sniknik. Сработало.
Интересно как воспринимается значение 01/06/2004/ в запросе "SELECT * FROM DB WHERE DB.DATA=01/06/2004" , ведь не выдается никакого сообщения об ошибки.
>>ShortDateFormat только определяет формат отображения данных на клиенте и никак не зависит на вид SQL предложения.
Все равно в случае "SELECT * FROM DB WHERE DB.DATA=#"+DateToStr(Data1)+"#"; мне сначала надо задать ShortDateFormat:="mm/dd/yyyy" чтобы в запрос воспринял дату правильно.
А можно ещё один вопрос?
Как сделать это через параметр. Я создаю параметр parDATA(ftDate).Запрос:
SELECT * FROM DB WHERE DB.DATA=:parDATA.Потом присваиваю
ADOQUERY1.Parameters.Items[0].Value:=Date1. Выборка ничего не
возвращает.Пробовал и так:
ADOQUERY1.Parameters.Items[0].Value:="#"+DateToStr(Date1)+"#".Конечно же выдает ошидку несовместимости типов.
← →
sniknik © (2004-02-17 12:43) [7]>... 01/06/2004. ведь не выдается никакого сообщения об ошибки.
а почему должно выдавать? другое представление той же записи (01 / 06) / 2004 ну как это верное представление?
> Пробовал и так:
> ADOQUERY1.Parameters.Items[0].Value:="#"+DateToStr(Date1)+"#".Конечно же выдает ошидку несовместимости типов.
надо так
ADOQUERY1.Parameters.Items[0].Value:=Date1;
← →
sniknik © (2004-02-17 12:47) [8]> ADOQUERY1.Parameters.Items[0].Value:=Date1. Выборка ничего не
Date1 типа дататайм? т.е. с секундами, а у тебя точное равенство. можеш так проверить
ADOQUERY1.Parameters.Items[0].Value:= Trunc(Date1);
← →
Fay © (2004-02-17 12:58) [9]select blabla form bububu where jopa = "06/01/2004"
НЕ РАБОТАЕТ?! Очень странно.
← →
Artem03 (2004-02-17 13:08) [10]Что касается MS SQL, то у него по умолчанию формат даты - mdy, поэтому вещи типа DateToStr будут давать ошибку (они переводят дату в строку в соответствии с настройкой ОС), поэтому лучше использовать FormatDateTime для этих вещей. Кроме того, для работы с датами последние должны быть представлены как строки (в одинарных или двойних кавычках, " или ").
В общем так, или дата представлена в виде MS SQL, или в начале сессии стоит команда set dateformat с определением нужного формата
← →
casper (2004-02-17 13:14) [11]Спасибо всё работает прекрасно.Вопрос закрыт.
>>Интересно как воспринимается значение 01/06/2004/ в запросе "SELECT * FROM DB WHERE DB.DATA=01/06/2004" , ведь не >>выдается никакого сообщения об ошибки.
Я просто не понял почему SELECT * FROM DB WHERE DATA=#01/06/2004# делает выборку правильно а SELECT * FROM DB WHERE DATA=01/06/2004 ничего не возвращает хотя синтактически запрос принимается.
← →
sniknik © (2004-02-17 13:21) [12]> Я просто не понял почему SELECT * FROM DB WHERE DATA=#01/06/2004# делает выборку правильно а SELECT * FROM DB WHERE
> DATA=01/06/2004 ничего не возвращает хотя синтактически запрос принимается.
дата это число в определенном представлении, и оно, это представление явно не получится(не сойдется с реальным) если еденицу сначала поделить на 6 а после результат еще на 2004.
а то что синтаксис принимается, что такого? число с числом сравнивается.
← →
casper (2004-02-17 13:46) [13]Наконец-то дошло и до меня. Я просто я думал что если у поля DATA тип TDateTime то при присвоении DATA=01/06/2004 знак "/" не может восприниматься как деление.
← →
Fay © (2004-02-17 13:51) [14]8)
← →
maxon (2004-02-19 10:58) [15]здравствуйте, вопрос на засыпку
> sniknik © (16.02.04 23:04) [3]
> так
> SELECT * FROM DB WHERE DATA=#01/06/2004#
> хотя лутше всеже через параметр.
а какая разница через SQL строку или через параметр, просто ради карасоты? или всё же есть разница?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c