Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1077519843
lightix
2004-02-23 10:04
2004.03.28
Сообщения об ошибках Oracle


1-1078919039
Шурик Ш
2004-03-10 14:43
2004.03.28
Как получить текущий системый разделитель целой и дробной частей?


3-1077708799
Shram
2004-02-25 14:33
2004.03.28
Фильтрация, проблема.


3-1077528020
Bless
2004-02-23 12:20
2004.03.28
Цифровые поля в LookupComboBox


1-1078422987
MAXH0
2004-03-04 20:56
2004.03.28
System tray





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский