Delphi & ADO: преобразование даты и времени в строку - PullRequest
2 голосов
/ 29 июля 2010

Я использую Delphi 2006 и ADO для подключения к базе данных MS Access. Некоторые из полей, которые я извлекаю, являются полями Date (в Access, отформатированном как «Средняя дата», т.е. 20 апреля 2010 г.), однако мне нужно получить их как строки:

FValue:=FAccessADOQuery.Fields.FieldByName(FIELD_NAME).AsString;

, а затем поля форматируются следующим образом: 20.04.2010.

Мой вопрос: когда происходит это форматирование и как я могу его настроить? Это настройки ADO (там ничего не удалось найти) или ОС (я использую Win XP ENG в США)? А может это Дельфи?

Спасибо! Лу

Ответы [ 3 ]

2 голосов
/ 29 июля 2010

переменные ShortDateFormat и LongTimeFormat используются для форматирования TDateTimeField в строку.

вы можете изменить значение этих переменных или попробовать что-нибудьотличается как это:

Dt :TDateTime;
Ds :String;
begin
//FAccessADOQuery.Fields.FieldByName(FIELD_NAME).AsString
Dt:=FAccessADOQuery.Fields.FieldByName(FIELD_NAME).AsDateTime;
Ds:=FormatDateTime('dd-mmm-yyyy',dt);
end;
0 голосов
/ 29 июля 2010

Вы можете получить значение как DateTime и использовать эту функцию для преобразования его в ваш формат

FValue:=FAccessADOQuery.Fields.FieldByName(FIELD_NAME).AsDateTime;

function DateToMediumDate(const Date: TDate): string;
var
  y, m, d: Word;
begin
  DecodeDate(Date, y, m , d);

  Result := Format('%d-%s-%d', [d, ShortMonthNames[m], y]);
end;
0 голосов
/ 29 июля 2010

Хорошо, только что нашел. Это общие настройки Delphi (если они отсутствуют, то значения берутся из ОС):

DateSeparator   := '-';
ShortDateFormat := 'dd-mmm-yyyy';

И теперь возвращаемое значение «20 апреля 2010 года».

...