德尔福& ADO:datetime到字符串转换

时间:2010-07-28 21:50:26

标签: delphi date ado

我使用Delphi 2006和ADO连接到MS Access数据库。我检索的一些字段是日期字段(在Access格式为“中日期”,即2010年4月20日)但是我必须将它们检索为字符串:

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

然后字段格式如下:2010年4月20日。

我的问题是:这种格式何时发生?如何自定义?它是ADO设置(在那里找不到任何东西)或操作系统(我在美国语言环境中使用Win XP ENG)?或者也许是Delphi?

谢谢! 娄

3 个答案:

答案 0 :(得分:2)

ShortDateFormatLongTimeFormat变量用于将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;

答案 1 :(得分:0)

好的,刚刚找到它。它是delphi的一般设置(如果缺少那么值来自OS):

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

现在返回的值是“2010年4月20日”。

答案 2 :(得分:0)

您可以将值检索为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;