Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как выбрать 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]

Через параметры.


Наверх

Титульная страница Поиск, карта сайта Написать письмо