Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Uhrzeit wird abgeschnitten (https://www.delphipraxis.net/205522-uhrzeit-wird-abgeschnitten.html)

Michael Ebner 19. Sep 2020 19:19

Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC

Uhrzeit wird abgeschnitten
 
Beim Lesen von TDateTime-Werten aus einer SQLite-Datenbank mit FireDAC wird stets die Uhrzeit abgeschnitten oder auf 0 gesetzt.

Also 19.09.2020 00:00:00

Auch Anweisungen wie FormatDateTime('dd.mm.yyyy hh:mm:ss', LField.AsDateTime) helfen nicht weiter.

FormatOptions in Connection und Query sind versucht, DateTimeFormat in den Params hilft nicht weiter, DisplayFormat in der TField-Komponente bringt nichts... was könnte man sonst noch versuchen?


(Schreiben von TDateTime-Werten mit Uhrzeit geht einwandfrei und problemlos, mit einem externen SQLite-Tool werden die Uhrzeiten korrekt angezeigt.)

(Problem tritt so in 10.2 als auch in 10.4.1 auf, andere Versionen nicht versucht)

Delphi.Narium 19. Sep 2020 19:34

AW: Uhrzeit wird abgeschnitten
 
Lass Dir mal LField.AsDateTime ausgeben ala
Delphi-Quellcode:
ShowMessage(FloatToStr(LField.AsDateTime))
oder im Debugger, ...

Ein DateTime hat im Vorkommaanteil die Tage seit 30.12.1899 und im Nachkommaanteil die Zeit seit Mitternacht. Wenn der Nachkommaanteil = 0 ist, wird Dir (warum auch immer) der Zeitanteil des TDateTime vorenthalten. Wenn der fehlt, kann Dir kein Format-irgendwas helfen. Du müsstest dann mal prüfen, wo der Zeitanteil "unterschlagen" wird.

Bernhard Geyer 19. Sep 2020 19:45

AW: Uhrzeit wird abgeschnitten
 
Zitat:

Zitat von Michael Ebner (Beitrag 1473874)
(Schreiben von TDateTime-Werten mit Uhrzeit geht einwandfrei und problemlos, mit einem externen SQLite-Tool werden die Uhrzeiten korrekt angezeigt.)

(Problem tritt so in 10.2 als auch in 10.4.1 auf, andere Versionen nicht versucht)

Würde darauf Tippen das der verwendete DB-Datentyp von Firedac nicht richtig interpretiert wird.

Wenn ich das hier sehe: https://sqlite.org/datatype3.html
dann würde ich sagen das hier sqlite eine sehr eigenen Weg geht.

Welchen Datentyp hast du jetzt dann genommen

Redeemer 19. Sep 2020 20:57

AW: Uhrzeit wird abgeschnitten
 
Zitat:

Zitat von Michael Ebner (Beitrag 1473874)
Beim Lesen von TDateTime-Werten aus einer SQLite-Datenbank mit FireDAC wird stets die Uhrzeit abgeschnitten oder auf 0 gesetzt.

Also 19.09.2020 00:00:00

Auch Anweisungen wie FormatDateTime('dd.mm.yyyy hh:mm:ss', LField.AsDateTime) helfen nicht weiter.

FormatOptions in Connection und Query sind versucht, DateTimeFormat in den Params hilft nicht weiter, DisplayFormat in der TField-Komponente bringt nichts... was könnte man sonst noch versuchen?

Schau mal, was AsString und AsFloat liefern.
Im besten Fall kann man AsFloat nehmen, addiert ein Tage-Bias und fertig ist das TDateTime.
Im schlimmsten Fall nimmt man sich das AsString und muss es selbst parsen.
Dazu bietet sich jeweils ein
Delphi-Quellcode:
class helper for TField
an.

Ich mache das bei MSSQL so, weil selbst Windows 10 von sich aus maximal SQL Server 2005 unterstützt und ich keine Lust auf eine Abhängigkeit vom SQL Server Native Client habe.

Bernhard Geyer 20. Sep 2020 11:11

AW: Uhrzeit wird abgeschnitten
 
Zitat:

Zitat von Redeemer (Beitrag 1473881)
Ich mache das bei MSSQL so, weil selbst Windows 10 von sich aus maximal SQL Server 2005 unterstützt und ich keine Lust auf eine Abhängigkeit vom SQL Server Native Client habe.

[OT]
Win10 unterstützt schon die aktuellen Versionen. Musst halt .NET nehmen.
Ich könnte hier auch kotzen wieso MS meint hier mit "leichten Druck" Leute auf die .NET-Entwicklung zu bringen.
Sie hätten doch besser weiter den "normalen" OLEDB-Treiber aktualisieren zu können
Übrigens: Wenn deine Kunden anfangen die alten TLS-Varianten abschalten zu wollen, da darf auch deren IT den aktuellen OLEDB-Treiber für eine Anwendung verteilen.
Haben jetzt schon 2 Kunden gehabt die hier erstmal unsere Anwendung "lahm gelegt" haben.
[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf