Формат даты при сохранении в MySQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Формат даты при сохранении в MySQL

Сообщение Олег » 06.04.2013 01:12:17

Подскажите, пожалуйста, как нужно сохранять и выводить в грид обратно поля типа Дата. У меня не получается, на форме ввожу 06.04.2013 (Компонент TDateEdit), сохраняю в базу запросом:
Код: Выделить всё
    SQLQueryWrite.SQL.Add('INSERT INTO persons (fio, age, district_id, address, dateopen) VALUES (:StrFIO, :StrDR, (SELECT district.id FROM district WHERE district.name = :StrDistrict), :StrAddress, :StrDateOpen);');
    SQLQueryWrite.Params.ParamByName('StrFIO').AsString:= StrFIO;
    SQLQueryWrite.Params.ParamByName('StrDR').AsString:= StrDR;
    SQLQueryWrite.Params.ParamByName('StrDistrict').AsString:= StrDistrict;
    SQLQueryWrite.Params.ParamByName('StrDateOpen').AsString:= StrDateOpen;
    SQLQueryWrite.Params.ParamByName('StrAddress').AsString:= StrAddress;
    SQLQueryWrite.ExecSQL;


а при выводе в гриде отображается дата как 20.04.2006. Что-то с форматами не то.
Олег
незнакомец
 
Сообщения: 5
Зарегистрирован: 30.03.2013 01:45:33

Re: Формат даты при сохранении в MySQL

Сообщение Vadim » 06.04.2013 05:56:55

Олег писал(а):SQLQueryWrite.Params.ParamByName('StrDR').AsString:= StrDR;

StrDR должно быть в формате ГГГГ-ММ-ДД.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Формат даты при сохранении в MySQL

Сообщение Владимир » 06.04.2013 08:08:12

Для порядка в FormCreate установить
Код: Выделить всё
DateSeparator:='.';
ShortDateFormat:='dd.mm.yyyy';
ShortTimeFormat:='hh:mm:ss';


Для преобразования '21.12.2013' в '20131221' использую функцию
Код: Выделить всё
function DateToDBString(Str:String):String;
var
ss:array[1..3]of String [4];
i,j:Integer;
begin
ss[2]:='';ss[3]:='';
ss[1]:=Str[1];
j:=1;
for i:=2 to utf8length(Str) do
  if Str[i]<>'.' then ss[j]:=ss[j]+Str[i] else
  inc(j);
DateToDBString:=ss[3]+ss[2]+ss[1];
end;
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Формат даты при сохранении в MySQL

Сообщение alexs » 06.04.2013 08:36:08

Олег
Почему у вас даты находятся в строках?
Для дат есть тип TDateTime.
Соответсвенно
Код: Выделить всё
SQLQueryWrite.Params.ParamByName('StrDateOpen').AsDateTime
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Формат даты при сохранении в MySQL

Сообщение Олег » 06.04.2013 22:53:17

Спасибо всем за помощь!) Все получилось
Олег
незнакомец
 
Сообщения: 5
Зарегистрирован: 30.03.2013 01:45:33


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

Рейтинг@Mail.ru