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

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

Подскажите пожайлусата как правильно и рационально [D6, MSSQL]


Страницы:   1 2

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 запроса.


Страницы:   1 2

Наверх

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