![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: ZeosLib
Datum/Uhrzeit speichen und sortieren..
Hallo Leute,
Ich hole via Indy Mails von einem Pop3-server ab .. dann speichere ich das Maildatum: MAILDATENBANK.FieldByName('DATUM').AsDateTime:=Msg .Date; -> In der Datenbank kommt dann z-B. "30.05.2017" an .. Wie kann ich die Uhrzeit der Mail auch noch abspeichern .. UND wie kann ich dann die Mails "order by Datum & Uhrzeit" anzeigen lassen ? Vielen Dank für Hinweise |
AW: Datum/Uhrzeit speichen und sortieren..
Erweitere dein Feld DATUM zu einem Feld das Datum und Uhrzeit speichern kann.
|
AW: Datum/Uhrzeit speichen und sortieren..
hi ...
msg.Date ist ja ein Extended .. Kann ich den Wert via "AsSQLTimeStamp" in ein TIMESTAMP Feld speichern? |
AW: Datum/Uhrzeit speichen und sortieren..
Im Extended steckt schon beides. Im Ganzzahlbereich das Datum und im Nachkommabereich die Zeit.
|
AW: Datum/Uhrzeit speichen und sortieren..
Ich würde Datum und Uhrzeit als Timestamp abspeichern und nicht formatiert.
|
AW: Datum/Uhrzeit speichen und sortieren..
Ein DateTime-Feld ist ja nicht formatiert, das ist nur die Darstellung. Wie das intern gespeichert wird, hängt AFAIK vom DBMS ab.
|
AW: Datum/Uhrzeit speichen und sortieren..
Hm.
Zitat:
|
AW: Datum/Uhrzeit speichen und sortieren..
So sieht das aus, wenn man mit einem Admin-Tool wie IBExpert oder FlameRobin reinschaut.
|
AW: Datum/Uhrzeit speichen und sortieren..
Zugewiesen wurde es erstmal "unformatiert" als TDateTime, also als Float.
Was in der DB an kommt, hängt erstmal von dem Feld ab. * Wie ist die Spalte/Tabelle definiert? Und dann auch von der Zugriffskomponente und dem DBMS, falls der Wert konvertiert werden muß. Zitat:
Man kann Datums-/Zeit-Werte als Integer (Sekunden/Millisekunden/... seit Tag X speichern), oder als Float (TDateTime ist z.B. Tage seit Tag X), als String oder sonstwie. Alle Integer-/Float-Werte kann man problemlos sortieren, genauso wie normale Zahlen. Und bei einem String wird Zeichen für Zeichen verglichem, also wenn man soeinen Mist bat, dann sollte das auch mit festen Längen und von Groß nach Klein gespeichert sein, um "richtig" verglichen werden zu können. (YYYY-MM-DD HH:MM:SS.zzz) |
AW: Datum/Uhrzeit speichen und sortieren..
Tip am Rande, stell das Datumsformat von Windows auf YYYY-MM-DD um.
Bei jedem Datum, das nicht diesem Format folgt, kannst Du sicher sein, das da jemand seine Finger im (Format-)Spiel hat. Gruß K-H |
AW: Datum/Uhrzeit speichen und sortieren..
Hä? wie kann man denn an dem Datumsformat fest machen, dass da jemand seine Finger im Spiel hatte, was auch immer das in diesem Zusammenhang heißen soll? Und was ist, wenn der Anwender ein anderes Datumsformat bevorzugt?
|
AW: Datum/Uhrzeit speichen und sortieren..
Wenn MSG vom Typ TIdMessage ist, dann enthält Date das Datum und die Uhrzeit, da es vom Typ TDateTime ist.
Mit AsDateTime wird dem Datenbankfeld also auch Datum mit Uhrzeit zugewiesen. Wie ist denn Datum in der Datenbank definiert? Als Datumstyp? Dann sollte das eigentlich passen. Und wenn man in der Datenbank einen Datumstypen hat, der auch die Uhrzeit enthält, dann reicht ein Order by Datum für die Sortierung nach Datum und Uhrzeit aus. Das Datumsformat ist hierbei irrelevant. |
AW: Datum/Uhrzeit speichen und sortieren..
Zitat:
Wenn Du also das WindowsDatumsformat auf das ISO-Format umstellst, wird bei jeder Software die dieses Format, das Windowsformat, nutzt, YYYY-MM-DD angezeigt. Ist das nicht der Fall, z.B. bei der Ausgabe einer Query, dann wurde entweder ein String abgelegt oder schon ein Ausgabeformat definiert. Zitat:
Zitat:
K-H |
AW: Datum/Uhrzeit speichen und sortieren..
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo und VIELEN DANK :-)
Funktioniert jetzt.. habe folgende Felder:
Code:
Befüllt via:
ASQL := 'ALTER TABLE "MAILDATENBANK" add "S_DATUM" CHAR(10)';ZConnection1.ExecuteDirect( ASQL );
ASQL := 'ALTER TABLE "MAILDATENBANK" add "S_UHRZEIT" CHAR(10)';ZConnection1.ExecuteDirect( ASQL ); ASQL := 'ALTER TABLE "MAILDATENBANK" add "DATUM_ZAHL" FLOAT';ZConnection1.ExecuteDirect( ASQL ); ASQL := 'ALTER TABLE "MAILDATENBANK" add "ZEITSTEMPEL" TIMESTAMP';ZConnection1.ExecuteDirect( ASQL );
Code:
MAILDATENBANK.FieldByName('DATUM').AsDateTime:=Msg.Date;
MAILDATENBANK.FieldByName('S_DATUM').AsString:= DateToStr(msg.Date); MAILDATENBANK.FieldByName('S_UHRZEIT').AsString:=TimeToStr(msg.Date); MAILDATENBANK.FieldByName('ZEITSTEMPEL').AsExtended:=Msg.Date; Danke und LiGrü Erich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz