Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Timestamp zerlegen (https://www.delphipraxis.net/194064-timestamp-zerlegen.html)

HPB 13. Okt 2017 10:10

Datenbank: Interbase • Version: egal • Zugriff über: egal

Timestamp zerlegen
 
Guten Tag Delphianer,
ich habe in einer Tabelle ein Feld mit einem Zeitstempel (TimeStamp)
Dieses Feld möchte ich in Datum und Zeit zerlegen.

Mit
Delphi-Quellcode:
DecodeDate(dtmdMain.kalenderITEMEND.AsDateTime, pJahr, pMonat, pTag);
wird nicht das korrekte Jahr ausgeben, sondern der 30.12.1899
Auch
Delphi-Quellcode:
FormatDateTime('dd.mm.yyyy', dtmdMain.kalenderITEMEND.AsDateTime)
liefert das gleiche Ergebnis.
Ich vermute das liegt an der Selektion von "dtmdMain.kalenderITEMEND.AsDateTime"
Eine Selektion .AsSQLTimeStamp führte zu einem Fehler.
Wie muss die Selektion sein, damit ich das richtige Datum aus dem Zeitstempel erhalte?
Vielen Dank für Eure Hilfe.

mkinzler 13. Okt 2017 10:15

AW: Timestamp zerlegen
 
Das Datum 31.12.1899 entspricht dem Wert 0. (1 ist der 01.01.1900).
In der datenbank befinden sich wirklich Datumswerte und nicht nur Zeiten?
Was ergibt .Value?

HPB 13. Okt 2017 11:01

AW: Timestamp zerlegen
 
mkinzler,
vielen Dank für Deine Antwort.
value ergibt das gleiche Datum = 20.12.1899.

Das DB-Feld ist definiert als "ITEMEND TIMESTAMP NOT NULL"
Als Wert steht dieses in der Spalte ITEMEND: 14.10.2017 21:00:00

mkinzler 13. Okt 2017 12:13

AW: Timestamp zerlegen
 
Mit welchen Komponenten wird zugegriffen?

HPB 13. Okt 2017 14:11

AW: Timestamp zerlegen
 
Zitat:

Zitat von mkinzler (Beitrag 1383229)
Mit welchen Komponenten wird zugegriffen?

Ich benutze die Standard IBX-Komponenten.
Um die Daten abzuholen benutze ich keine Komponenten, sondern
speicher den Feldinhalt in eine Variable
Delphi-Quellcode:
pDatum := FormatDateTime('dd.mm.yyyy', dtmdMain.kalenderITEMEND.AsDateTime)
ab.
Wobei pDatum vom Typ String ist.

mkinzler 13. Okt 2017 14:52

AW: Timestamp zerlegen
 
Welchen Typ hat das persistente Feld? (dtmdMain.kalenderITEMEND)

HPB 13. Okt 2017 15:52

AW: Timestamp zerlegen
 
Zitat:

Zitat von mkinzler (Beitrag 1383252)
Welchen Typ hat das persistente Feld? (dtmdMain.kalenderITEMEND)

Das DB-Feld ist definiert als "ITEMEND TIMESTAMP NOT NULL"

mkinzler 13. Okt 2017 16:43

AW: Timestamp zerlegen
 
Nicht das Feld in der Datenbank sondern das persistente Feld, welches Du anlegen lassen hast (dtmdMain.kalenderITEMEND);

HPB 14. Okt 2017 08:49

AW: Timestamp zerlegen
 
Zitat:

Zitat von mkinzler (Beitrag 1383263)
Nicht das Feld in der Datenbank sondern das persistente Feld, welches Du anlegen lassen hast (dtmdMain.kalenderITEMEND);

Ich habe es gelöst.
Zum Verständnis:
Ich benutze den TDBPlanner von TMS.
Dieser kennt das Ereignis ItemSelect. Dort muss ich auch die Daten abfragen.
Ich habe einfach bei einem falschen Ereignis die Daten abgefragt.
Wenn ich die Daten beim ItemSelect abfrage, dann können auch
Datum und Zeit aus dem TimeStamp extrahiert werden.
Vielen Dank für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 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