Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Использую 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1078762909
Islander
2004-03-08 19:21
2004.03.28
Непонятки с {$DEFINE}


3-1077800860
Rule
2004-02-26 16:07
2004.03.28
Не могу создать сервер автоматизации DCOM


7-1072511631
Evgeniy_K
2003-12-27 10:53
2004.03.28
Заголовок активного окна


1-1078382310
girich
2004-03-04 09:38
2004.03.28
Вопрос по TServiceApplication (события OnCreate и OnStart).


11-1056787944
mox
2003-06-28 12:12
2004.03.28
Icon