我使用Delphi 2006和ADO连接到MS Access数据库。我检索的一些字段是日期字段(在Access格式为“中日期”,即2010年4月20日)但是我必须将它们检索为字符串:
FValue:=FAccessADOQuery.Fields.FieldByName(FIELD_NAME).AsString;
然后字段格式如下:2010年4月20日。
我的问题是:这种格式何时发生?如何自定义?它是ADO设置(在那里找不到任何东西)或操作系统(我在美国语言环境中使用Win XP ENG)?或者也许是Delphi?
谢谢! 娄
答案 0 :(得分:2)
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;
答案 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;