![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как выбрать Select с таблицой DataTime ? [D6]
dreamse © (2006-02-21 13:08:00)пишу запрос :
select * from Statistic
where DateStat = '21.02.2007 00:00:00'
Выдаёт :
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
Как сделать Select на поле DateTime ? Если я пеердаю только дату
parovoZZ (2006-02-21 19:13:00) [1]Даже я, самый тупой на этом форуме, с параметрами разобрался за 5 минут.
А была такая же ерунда, когда надо было просто считать текст из Edit-а, а оно не работало.
Правда в книжке было написано, что параметры надо прописывать в свойствах ADOQuery на этапе разработки (дизайн тайм гы). Поначалу я так и делал. Но потом пришлось очистить директорию, где валялся проект, от лишних файлов. И как-то открываю инспектор объектов, залезаю в параметры, чтобы прописать ещё один...а там пусто. Однако. Добавил параметр от потолка, компилирую, запускаю на трассировку...а оно работает. ))
msguns (2006-02-21 15:10:00) [2]>dreamse (21.02.06 14:18) [13]
>... и главное чтобы работало
Свежо предание.. но верится с трудом (c) ;)
Johnmen (2006-02-21 14:33:00) [3]>продаёться без проблем ,
Однокурсникам впариваешь?
Sergey13 (2006-02-21 14:23:00) [4]2[13] dreamse (21.02.06 14:18)
> но иногда встречаються ситуации когда время до выпуска новой вресии или патча минимальны ...
Не мудрено с таким то подходом. 8-)
"И тут Остап понял - сейчас начнут бить" (с) 12 стульев
dreamse (2006-02-21 14:18:00) [5]> Плохиш © (21.02.06 14:11) [12]
> Озвучте организацию
Shareware
Софт пишеться от души , продаёться без проблем , но иногда встречаються ситуации когда время до выпуска новой вресии или патча минимальны ... и главное чтобы работало
Плохиш (2006-02-21 14:11:00) [6]
> но просто пока некогда , нужно срочно писать код
Гы, сына, ЛОЛ (c) ЮЗ
PS. Озвучте организацию, где платят за глючный и неработающий код, и расценки то же, пожалуйста. Может работодателя сменю :-)
msguns (2006-02-21 14:00:00) [7]Пример параметрического запроса в ADO:
with ADOQuery1 do
begin
SQL.Clear;
SQL.Text := 'SELECT * FROM MYTABLE WHERE Name=:pn AND FDate=:dt'
Parameters.ParamByName('pn').Value := 'dreams';
Parameters.ParamByName('dt').Value := DateToStr(dt1);
Open;
end;
msguns (2006-02-21 13:55:00) [8]>dreamse (21.02.06 13:39) [6]
>В чём проблема ?
Проблема в том, что разные компоненты доступа, "движки" и сервера (именно в такой последовательности происходит "стандартная" передача данных от программы к Базе Данных) по-разному "воспнринимают" дату.
В частности, для ADO+Jet (судя по упоминанию MS SQL) вполне приемлима такая форма:
'Select ... where Fdate='+DateToStr(<Дата>)
Однако для другого случая такой код "вылетит". Для обеспечения независимости программы от причуд и особенностей СУБД и придумали параметры. Их основной задачей и достоинством является то, что компонент доступа, имеющий соотв.св-во (Params,Parameters...), умеет "переводить" дату из "паскального" (программного) типа в формат, понятный движку и в конечно счете серверу.
Во избежание дальнейших "плюх" в работе с разными БД рекомендуют использовать параметрические запросы, для чего надо просто один раз разобраться с механизмом и синтаксисом параметров.
О чем здесь и говорилось с самого начала (см. [1])
dreamse (2006-02-21 13:52:00) [9]> stone © (21.02.06 13:42) [7]
Спасибо , на досуге посмотрю параметры.. но просто пока некогда , нужно срочно писать код , всем спасибо
Johnmen (2006-02-21 13:42:00) [10]Проблема в нежелании [3]
stone (2006-02-21 13:42:00) [11]Проблема в неверном преобразовании даты, что ты сам привел в сабже.
если уж ты ни в какю не хочешь пользоваться параметрами, то пиши
set dateformat dmy select * from Statistic where DateStat = '21.02.2007 00:00:00'
Хотя это скорее вредный совет, но полезным ты сам воспользоваться не пожелал...
dreamse (2006-02-21 13:39:00) [12]> msguns © (21.02.06 13:36) [5]
нет , оказываеться не работает , работает только когда поле Dateping являеться типом varchar а если это тип DataTime то не работает ...
В чём проблема ?
msguns (2006-02-21 13:36:00) [13]>dreamse (21.02.06 13:34) [4]
>Вот этот код работает :
Так писать нельзя. Хотя бы потому, что неграмотно.
dreamse (2006-02-21 13:34:00) [14]Разобрался , дело в том что MS SQL прелбразует формат DateTime
Вот этот код работает :
select * from Statis_ping
where Dateping = 'Feb 21 200'
Плохиш (2006-02-21 13:25:00) [15]Parameters + F1
dreamse (2006-02-21 13:22:00) [16]> Sergey13 © (21.02.06 13:11) [1]
Через какие ?
Не понял
Sergey13 (2006-02-21 13:11:00) [17]Через параметры.