![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожайлусата как правильно и рационально [D6, MSSQL]
svt © (2006-10-12 10:17:00)Подскажите пожайлусата как правильно и рационально конвертировать формат даты из DateTimePicker1.DateTime в формат mssql. Дело в том что формат в DateTimePicker1.DateTime (дд.мм.гггг), а в mssql - мм.дд.гггг (т.е. в инсерт можно так записать).
Короче говоря помогите решить этот вопрос. что и как правильно необходимо сделать. Спасибо
dr Gonzo (2006-10-12 10:57:00) [21]1. Нужно использовать ПАРАМЕТРЫхранимых процедур или квери.
Для Хран. Процедуры:
SELECT * FROM TABLE1 WHERE FieldDate > @ParamDate
в коде Delphi :
...
ADOStoredProc1.Parameters.ParamByName('@ParamDate').Value := XXXX;
...
где XXX тип TDateTime
для ADOQuery
ADOQuery.SQL.Text:= 'SELECT * FROM TABLE1 WHERE FieldDate > :@ParamDate'
ADOQuery.Parameters.ParamByName('@ParamDate').Value := XXXX;
2. MSSQL понимает 2 формата даты их строки.
а ) который настроен в кодовой странице машины - свойства сервера.
б ) универсальный формат MSSQL, который не зависит от настроек :
yyyymmdd
Bless (2006-10-12 10:56:00) [22]svt (12.10.06 10:30) [5]>
Тебе дали лучший в твоей ситуации совет: пользуйся параметрами.
ADODataset1.commandtext := ' insert into table1 (F1, F2, F3) values (:F1, :F2, :F3)'
ADODataSet1.Parameters.ParamValues['F1'] := DateTimePicker1.DateTime;
> k2 © (12.10.06 10:32) [6]
> про типы таки читать не хочешь, пытаешься записать строку
> в поле типа даты
>
Дык, это ж не криминал, если строка сформирована надлежащим образом.
>т.е. в базе формат храниться в форме гггг-мм-дд 00:00:000.000
Это не так.
По поводу конвертирования строки в дату рекомендую почитать следующие статьи в Book Online:
- Writing International Transact-SQL Statements
- Using Date and Time Data
- Unseparated String Format
- Rules for Entering Search Values
Хотя параметры лучше.
SergeD (2006-10-12 10:53:00) [23]Пример очень простой.
Пишешь запрос:
INSERT INTO TABLE1 (ПОЛЕДАТЫ, ПОЛЕ1, ПОЛЕ2)
VALUE (:DAT, :POL1,:POL2)
А потом, когда тебе нужно будет заполнить эти поля, просто передашь параметры с нужным типом. остальное БД сделает сама.
Query.ParamByName('dat').asDate:= дата;
Query.ParamByName('pol1').asInteger:= число;
Query.ParamByName('pol2').asString:= строка;
Query.ExecQuery;
svt (2006-10-12 10:47:00) [24]необходимо использовать convert(datetime,date1,104)?
k2 (2006-10-12 10:44:00) [25]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1160626264&n=18
svt (2006-10-12 10:41:00) [26]я понимаю, что вы указываете на то, что необходимо самому.... но не могли бы вы отбросить это и просто показать пример, как это реализовать.... ведь с наличием примера легче освоить , чем не знать с чего начинать и куда бежать. очн прошу пример.
k2 (2006-10-12 10:33:00) [27]параметр, связанная переменная
svt (2006-10-12 10:32:00) [28]
> insert into table1 (F1, F2, F3) values (:F1, :F2, :F3)
что такое :F1...?
k2 (2006-10-12 10:32:00) [29]про типы таки читать не хочешь, пытаешься записать строку в поле типа даты
svt (2006-10-12 10:30:00) [30]
> кто сказал такую глупость ?
т.е. в базе формат храниться в форме гггг-мм-дд 00:00:000.000
а в insert into table (date1) values ('13.10.2006') можно записать и така... при условии, что у меня в настройках базы выбран "язык для пользователя"-russian.
в делфях говорят есть функция, подобная DateToStr, ну только для SQL формата? это правда, если есть то какие у нее параметры настройки?
ANB (2006-10-12 10:28:00) [31]
> просто очн необходимо сейчас
просто ничего не бывает. свыкнись, что теорию надо учить. и на это нужно время.
почитай книжку.
insert into table1 (F1, F2, F3) values (:F1, :F2, :F3)
svt (2006-10-12 10:25:00) [32]
> Через параметры SQL запроса.
а на примере возможно показать... просто очн необходимо сейчас....плз
ANB (2006-10-12 10:24:00) [33]
> а в mssql - мм.дд.гггг
кто сказал такую глупость ?
Sergey13 (2006-10-12 10:21:00) [34]Через параметры SQL запроса.