Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zeit als Dezimalwert ausgeben (https://www.delphipraxis.net/210098-zeit-als-dezimalwert-ausgeben.html)

hewy 1. Mär 2022 15:29

Datenbank: SQLite • Version: 3.10.0 • Zugriff über: Delphi

Zeit als Dezimalwert ausgeben
 
Sollte eigentlich einfach gehen, aber dennoch suche ich nun seit heute früh nach eine Lösung. Es Geht um folgendes:
In einer SQLite Datenbank habe ich ein Feld [Presence] TIME DEFAULT 0, Da steht eine Präsenz Zeit drin, daher wie lange war der Mittarbeiter heute in der Firma.
Nun sollte ich eine Abfrage “SELECT [Presence], [Presence] As PresenceDecimal from WorktimeDb” erstellen. Wobei das PresenceDecimal Feld die Zeit als dezimal wert ausgeben sollte.
Habe schon unzählige Varianten ausprobiert aber irgendwie will es einfach nicht so wie ich es brauche.
zB. “SELECT [Presence], CAST(([Presence]) AS Float) AS PresenceDecimal From WorktimeDb” Das funktioniert leider nur halbwegs den die Dezimal Zeit wird ohne Nachkomma Stellen ausgegeben. Heisst 3:36 wir zu 3!
Wäre sehr Dankbar für jegliche Hinweise wie das zu lösen ist.
Gruss und Danke HeWy

Der schöne Günther 1. Mär 2022 15:53

AW: Zeit als Dezimalwert ausgeben
 
Als was ist denn das Sqlite-Feld deklariert? Den Fehler hatte ich neulich auch gemacht, und hatte es als NUMERIC angelegt und mich dann gewundert wo die Nachkommastellen bleiben.

Mit was greifst du zu? FireDAC?

Kannst du es mit einem Drittanbieter-Tool (z.B. https://sqlitestudio.pl/) nachvollziehen dass da in der DB auch wirklich die Nachkommastellen enthalten sind?

hewy 1. Mär 2022 16:17

AW: Zeit als Dezimalwert ausgeben
 
Hallo Günther,
nun ja ich versuche das mit eine SQL Query wie erwähnt. Das Resultat der Abfrage würde ich dann mit FireDac in Delphi verwenden. Allerdings erhalte ich schon in SqlitExpert ohne Delphi nur die integer Werte. Zur Verfügung haben ich nur das eine Feld [Presence] vom Type Time. Nun sollte ich mit einer SELECT Abfrage einmal im Zeit Format und in einen zweiten Feld in Dezimal format die Zeit ausgeben.
Die Frage ist nun wie bringe ich die SQL Query dazu mit die Dezimal Zeit auch mit den Nachkomma stellen auszugeben?
Damit bekomme ich keine Nachkomma Stellen “SELECT [Presence], CAST(([Presence]) AS Float) AS PresenceDecimal From WorktimeDb” für [PresenceDecimal]
Die Obige Abfrage ergibt:
Presence | Value1
03:58:00.000 | 3
03:52:00.000 | 3

Möchte aber folgendes haben:
Presence | Value1
03:58:00.000 | 3.97
03:52:00.000 | 3.87


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