Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Float Zeitsumme als Hh:Mm ausgeben! (https://www.delphipraxis.net/211152-float-zeitsumme-als-hh-mm-ausgeben.html)

hewy 3. Aug 2022 21:21

Datenbank: SQLite • Version: 3.10.0 • Zugriff über: Delphi -> SQL Query

Float Zeitsumme als Hh:Mm ausgeben!
 
Irgend wie bin ich hier am Anschlag. Denke aber das sich das leicht lösen lassen sollte. Komme aber selber nicht dahinter.
Es geht um folgendes:
SELECT TotalMonthDec, TotalMonthDec as Hh:Mm FROM xxx
TotalMonthDec ist ein Float der Werte mehr als 24 haben kann
Also möchte ich in einer Zweite Spalte diese Zeiten im Format HH:MM darstellen Beispiel 121.75 soll zu 121:45 werten.
Sicher weiss hier jemand wie ich das anstellen kann.
Schon mal vielen Dank dafür.

haentschman 4. Aug 2022 05:47

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Moin...8-)
Eine Frage die ich mir immer wieder stelle:
Zitat:

Also möchte ich in einer Zweite Spalte diese Zeiten im Format HH:MM darstellen Beispiel 121.75 soll zu 121:45 werten.
Was bitteschön hat die Datenbank mit der Darstellung zu tun? :gruebel: Die Datenbank speichert den Wert, im Clienten wird der Wert auf die Gegebeheiten der Anzeige formatiert. :thumb:

Welchen Typ hat das Datenbank Feld?
Zitat:

ein Float der Werte mehr als 24 haben kann
...das habe ich nicht verstanden. :oops: (24 Stunden, Eier, Omas... :zwinker:)

hewy 4. Aug 2022 08:17

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Auch Moin,
Nun ja wollte die Zeiten welche ich aus einer Tabelle auslese die dort als Float gespeichert sind in einem Grid in zwei spaten anzeigen.
Einmal als Float und in der zweiten Spalte als Hh:Mm
Das liesse sich machen mit Zeiten kleiner 24 Stunden geht aber nicht wenn die Zeit darüber liegt. Dann wird in der zweiten Spalte immer mit 23:59 angezeigt.
Daher suche ich einen Weg den Float Wert am besten gleich in der SQL Abfrage entsprechend umzuformatieren.
Vielleicht hast Du dazu eine Vorstellung wie ich das sauber und performant hinbekomme.
Danke schon mal.

Redeemer 4. Aug 2022 10:17

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Dann rechne es halt selbst aus:
FLOOR(TotalMonthDec) || ':' || (TotalMonthDec - FLOOR(TotalMonthDec)) * 60

Das ist ISO/IEC-SQL. Je nach Implementation musst du statt || (Konkatenationsoperator nach ISO/IEC) die CONCAT-Funktion verwenden oder +.

hewy 4. Aug 2022 10:42

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Hallo Redeemer,
Vielen Dank für deine Antwort. Ja bleibt mir wohl nichts anderes übrig.
Leider unterstützt die hier verwendete SQLite Version 3.10 Floor() nicht.
Gibt es etwas dafür in Version 3.10 oder kann ich mit meinen Delphi XE5 auf einen neuere SQLite Version wechseln?

fisipjm 4. Aug 2022 10:52

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Zitat:

Zitat von hewy (Beitrag 1509757)
Leider unterstützt die hier verwendete SQLite Version 3.10 Floor() nicht.

Dann caste es doch einfach als Integer Wert:?

hewy 4. Aug 2022 11:50

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Danke auch eine Idee!

hewy 4. Aug 2022 12:34

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Und so habe ich es nun gelöst:

SELECT TotalMonthDec, CAST(TotalMonthDec AS INT) || ':' || substr('00'|| CAST((TotalMonthDec - CAST(TotalMonthDec AS INT)) * 60 AS INT), -2, 2) as TotTime FROM Tm_TimeDayData

Würde vielleicht auch noch etwas eleganter gehen.

Und hier das Resultat:
TotalMonthDec TotTime
2.73 2:43
2.17 2:10
23.15 23:08
27.15 27:08

Redeemer 4. Aug 2022 16:50

AW: Float Zeitsumme als Hh:Mm ausgeben!
 
Ja genau.

Ich glaube übrigens, das Vorhandensein von Floor liegt weniger an der Version als daran, ob es mit aktivierten Mathe-Funktionen kompiliert wurde.


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