एक सामान्य नियम के रूप में, 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();
यह उन सभी डेटाबेस एक्सेस लेयर्स के साथ काम करता है जिनके बारे में मुझे पता है।