AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Uhrzeit wird abgeschnitten

Ein Thema von Michael Ebner · begonnen am 19. Sep 2020 · letzter Beitrag vom 20. Sep 2020
Antwort Antwort
Michael Ebner

Registriert seit: 18. Mär 2006
Ort: Öschingen
4 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Uhrzeit wird abgeschnitten

  Alt 19. Sep 2020, 19:19
Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC
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)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: Uhrzeit wird abgeschnitten

  Alt 19. Sep 2020, 19:34
Lass Dir mal LField.AsDateTime ausgeben ala 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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Uhrzeit wird abgeschnitten

  Alt 19. Sep 2020, 19:45
(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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Uhrzeit wird abgeschnitten

  Alt 19. Sep 2020, 20:57
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 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.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Uhrzeit wird abgeschnitten

  Alt 20. Sep 2020, 11:11
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]
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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