AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Float Zeitsumme als Hh:Mm ausgeben!

Float Zeitsumme als Hh:Mm ausgeben!

Ein Thema von hewy · begonnen am 3. Aug 2022 · letzter Beitrag vom 4. Aug 2022
Antwort Antwort
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#1

Float Zeitsumme als Hh:Mm ausgeben!

  Alt 3. Aug 2022, 21:21
Datenbank: SQLite • Version: 3.10.0 • Zugriff über: Delphi -> SQL Query
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.
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.998 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 05:47
Moin...
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? Die Datenbank speichert den Wert, im Clienten wird der Wert auf die Gegebeheiten der Anzeige formatiert.

Welchen Typ hat das Datenbank Feld?
Zitat:
ein Float der Werte mehr als 24 haben kann
...das habe ich nicht verstanden. (24 Stunden, Eier, Omas... )

Geändert von haentschman ( 4. Aug 2022 um 11:41 Uhr)
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 08:17
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.
Heinrich Wyssen

Geändert von hewy ( 4. Aug 2022 um 09:36 Uhr)
  Mit Zitat antworten Zitat
Redeemer

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

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 10:17
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 +.
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer ( 4. Aug 2022 um 11:37 Uhr) Grund: "/ 100" war falsch
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 10:42
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?
Heinrich Wyssen
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
135 Beiträge
 
#6

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 10:52
Leider unterstützt die hier verwendete SQLite Version 3.10 Floor() nicht.
Dann caste es doch einfach als Integer Wert
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 11:50
Danke auch eine Idee!
Heinrich Wyssen
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#8

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 12:34
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
Heinrich Wyssen

Geändert von hewy ( 4. Aug 2022 um 12:37 Uhr)
  Mit Zitat antworten Zitat
Redeemer

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

AW: Float Zeitsumme als Hh:Mm ausgeben!

  Alt 4. Aug 2022, 16:50
Ja genau.

Ich glaube übrigens, das Vorhandensein von Floor liegt weniger an der Version als daran, ob es mit aktivierten Mathe-Funktionen kompiliert wurde.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:40 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