Delphi-Version: 5
Problem TDate/TDataTime >zu> Integer >zu> String
Hallo,
In meinem Programm werde Datumwerte als [Datum] Integer / [Std] Integer + [Min] Integer in der Datenbank gespeichert. Das habe ich gemacht weil Datum und Zeit immer wieder zerlegt werden müssten. Die Eingabe des Nutzers werden getrennt 1) Datum 2) von/bis als Std/Min. Jetzt brauche ich die Stundenwerte des letzten Monats:
Code:
dtA zeigt 41640 = 01.01.2014
function DaysOfMonth(ADate:TDate; corrMonth):String;
... DecodeDate(ADate, Year,Month,Day); IncAMonth(Year,Month,Day,corrMonth); dtA := EncodeDate(Year,Month,1); dtE := EndOfAMonth(Year,Month); dtE zeigt 41671 = 01.02.2014 - in den SQL_String kommt:
Code:
Ich wandele also die TDate-Werte in Strings um.
Result := ' (('+DateField+' >= '+sdtA+') AND ('+DateField+' < '+sdtE+')) ';
Code:
dtE = 41671 !!!
sdtE := IntToStr(Trunc(dtE));
sdtE = 41670 !!! Es werden nur die Datumsanteile benutzt und Ganzzahlen angezeigt. Wie kann das sein? Welche Möglichkeiten gibt es das zu vermeiden? |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Ich hab garnicht verstanden, was du überhaupt willst und wo das Problem ist?
Die großen Zahlen sind natürlich das, was man auch in der Beschreibung zu TDateTime lesen kann. (Tage seit einem bestimmten Datum) Ich glaub jetzt hab ich's verstanden. Wie ist denn EndOfAMonth im D2007 deklariert? Vielleicht ist da ja ein Bug drin. Und die Delphi-Updates hast du auch installiert? (nicht daß der vermeintliche Bug schon behoben wurde) In aktuelleren Delphis geht das zumindestens:
Delphi-Quellcode:
ShowMessage(DateToStr(41640) + ' ' + DateToStr(41671) + sLineBreak +
DateToStr(EncodeDate(2014, 01, 01)) + ' ' + DateToStr(EndOfAMonth(2014, 01))); Info für Andere, welche hier mitlesen: Statt Trunc besser DateOf verwenden.
Delphi-Quellcode:
function DaysOfMonth(ADate: TDate; CorrMonth: Integer): String;
... CDate := IncMonth(ADate, CorrMonth); dtA := StartOfTheMonth(CDate); dtE := EndOfTheMonth(CDate); |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Zitat:
Davon ab, daß die Speicherung der DateTimes als...Konstrukt auch schon übel war. Schlimm, daß sich sowas immer erst Jahre später rächt, und nicht sofort. Sherlock |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Könnte es sein, das hier ein Mißverständnis vorliegt?
Code:
41670 = 31.01.2014 23:59:59
dummy:=endofamonth(2014,01);
caption:=inttostr(trunc(dummy))+' = '+datetimetostr(dummy); 41671 wäre "Startofamonth" ?? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz