Преобразование формата даты

Форум для изучающих FPC и их учителей.

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

Ответить
Basileus
новенький
Сообщения: 23
Зарегистрирован: 31.03.2010 16:23:22

Преобразование формата даты

Сообщение Basileus »

При работе с MySQL обнаружилась проблема - нужно изменять введенный формат дд.мм.гггг в гггг.мм.дд. Не подскажете, есть ли какая-нибудь функция, позволяющая это сделать?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

DateTimeToString
svk12
постоялец
Сообщения: 411
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

FormatDateTime
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Сообщение Light13 »

неплохо бы увидеть код, где это необходимо.
Возможно проблему решит использование параметров в запросе, а возможно изменение маски ввода поля редактирования.
К сожалению, телепатией не страдаю :)
Alexus
незнакомец
Сообщения: 6
Зарегистрирован: 25.12.2009 15:08:14

Сообщение Alexus »

Именно для такого случая:

function DateFlip(St: string): string;
begin
DateFlip := Copy(St, 7, 4) + '-' + Copy(St, 4, 2) + '-' + Copy(St, 1, 2);
end;
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Сообщение Light13 »

мдя, попробуем включить телепатию

Код: Выделить всё

  {$TELEPATHY ON}
:D

Вы вводите данные в поле редактирования, но в базе данных другой формат данных.
Примерно так вы пытаетесь сохранить значения:

Код: Выделить всё

  Query1.SQL.Text:='Insert into TableName (FieldNameForDate) values (' + DateString + ')'; 


В связи с чем вам нужно менять формат даты, причем, к типу TDateTime ваше значение не имеет прямого отношения - это строка.

Попробуйте заменить прямую вставку значение на параметр, примерно так:

Код: Выделить всё

  SQLQuery1.SQL.Text:='Insert into TableName (FieldNameForDate) values ( :ParamDate)'; 
  SQLQuery1.Params.ParamByName('ParamDate').DataType:=ftDate;
  SQLQuery1.Params.ParamByName('ParamDate').Value:=DateValue;//тип данных TDateTime


никаких дополнительных преобразований делать не нужно - при конвертировании параметра произойдет автовыбор формата даты. Также можно использовать для ввода значений не edit, а, к примеру, DateEdit
Ответить