作爲一般規則,不要將TDateTime值視爲字符串,而應視爲日期和時間。
不要使用AsString方法獲取日期/時間字段的值,請使用AsDateTime方法並將其分配給TDateTime變量。
如果你想知道日期部分,使用提供的功能來做到這一點。例如在DateUtils單元中可用的那些。 SysUtils單位還包含一些日期/時間相關的功能。
uses
DateUtils, SysUtils;
var
MyDate: TDateTime;
MyDay, MyMonth, MyYear: Word;
begin
MyDate := MyQuery.Fields[3].AsDateTime; //not AsString
MyDay := DayOf(MyDate);
MyMonth := MonthOf(MyDate);
MyYear := YearOf(MyDate);
ShowMessage(Format('Day: %d, Month: %d, Year: %d', [MyDay, MyMonth, MyYear]);
//or also
MyDate := EndOfTheMonth(MyDate);
DecodeDate(MyDate, MyYear, MyMonth, MyDay);
ShowMessage(Format('Day: %d, Month: %d, Year: %d', [MyDay, MyMonth, MyYear]);
這同樣適用於存儲值的數據庫,而不是使用一個固定的日期格式,使用的參數,如:
uses
DateUtils, SysUtils;
var
MyDate: TDateTime;
MyDay, MyMonth, MyYear: Word;
begin
MyDate := EncodeDate(2013, 2, 17);
MyQuery.SQL.Text := 'insert into myTable (MyDate) values (:MyDate)';
MyQuery.Params.ParamByName('MyDate').AsDateTime := MyDate;
MyQuery.ExecSQL();
它與我所知道的所有可用的數據庫訪問層的。
數據庫中字段的數據類型是什麼? – 2013-02-17 14:55:30
想告訴我們你閱讀你的db字段值的地方嗎?它可以幫助很多,但作爲一個想法,你可以做Query.FieldMyDateTimeField.AsDateTime => TDateTime值,然後你可以格式化,即你DateToStr(MyDateTimeValue,MyTFormatSettings); – ComputerSaysNo 2013-02-17 14:57:46
他們是mysql中的日期時間值和我的dlephi應用程序中的字符串值 - 使用Fields [i]。AsString讀取DBGrid中的值 – Babah254 2013-02-17 14:58:05