Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zeit zwischen zwei Time Felder (https://www.delphipraxis.net/214406-zeit-zwischen-zwei-time-felder.html)

hewy 6. Jan 2024 14:51

Datenbank: SQLite • Version: 3.1 • Zugriff über: SQL Delphi

Zeit zwischen zwei Time Felder
 
Hallo allerseits,

Habe in einer SQLite Tabelle zwei TIME Felder.
[InTime] TIME,
[OutTime] TIME,
Nun möchte ich in einer Abfrage die Differenz dieser zwei Zeiten im Format HH:MM anzeige.
Habe einiges ausprobiert aber bisher keine brauchbare Abfrage erstellen können.
Kann doch nicht so schwierig sein.

All das bringt nichts Brauchbares:
SELECT InTime, OutTime,
Time(OutTime - InTime) As WorkTime,
(CAST(OutTime AS INT) - CAST(InTime AS INT)) as IntDif,
CAST(OutTime AS INT) || ':' || substr('00'|| CAST((OutTime - CAST(InTime AS INT)) AS INT), -2, 2) as TotTime,
Time(JULIANDAY(OutTime) - JULIANDAY(InTime)) AS difference
FROM Tm_ShiftDetailPln

Bin da wohl zu unerfahren.
Wäre sehr Dankbar wenn mir da jemand weiterhelfen könnte.

Wielen Dank schon mal.
Heinrich

TBx 6. Jan 2024 14:59

AW: Zeit zwischen zwei Time Felder
 
Hmm, aus dem Kopf: TimeDiff(time1, time2)

TurboMagic 7. Jan 2024 09:15

AW: Zeit zwischen zwei Time Felder
 
Hallo,

sollte das mit dem TimeDiff nicht passen mal in unit System.DateUtils nachschauen,
da gibt's jede Menge Datums und zeit bezogene Funktionen.

Grüße
TurboMagic

Uwe Raabe 7. Jan 2024 09:53

AW: Zeit zwischen zwei Time Felder
 
Das hilft aber innerhalb des SQL nicht viel.

hewy 7. Jan 2024 11:38

AW: Zeit zwischen zwei Time Felder
 
Hallo,
Danke für die Hints, Leider akzeptiert mein DB kein TimeDiff kann man dazu etwas aktivieren oder installieren?
Delphi funktionen könnten helfen müsste aber dazu die Berechnung beim speichern der Daten in ein zusätzliches neues Feld in der Datenbank durchführen.
Möchte es aber mit SQL lösen, das es nur bei einem Fall benötigt wird.
Irgendwie müsste sich das doch machen lassen.
Am besten hätte ich alle Datum und Zeit Daten und Datum von anfang an in der Db als Float gespeichert dann würden bei nachträglichen ergänzungen solche fälle gar nicht auftreten.
Ich warte mal ab vielleicht kommt doch noch was oder ich such morgen weiter.
Gruss
HW

Uwe Raabe 7. Jan 2024 11:46

AW: Zeit zwischen zwei Time Felder
 
Zitat:

Zitat von hewy (Beitrag 1531587)
Leider akzeptiert mein DB kein TimeDiff

Also, zumindest in der Doku ist es beschrieben: https://www.sqlite.org/lang_datefunc.html

hewy 7. Jan 2024 12:16

AW: Zeit zwischen zwei Time Felder
 
Richtig TimeDiff steht in der Anleitung allerdings sagt meine DB 'no such function: TimeDiff' nehme mal an das es DB Version abhängig.
Mal sehen ob ich die DB Version upgraden kann.

KodeZwerg 7. Jan 2024 13:19

AW: Zeit zwischen zwei Time Felder
 
Vielleicht versteht es das?
Delphi-Quellcode:
SELECT
 id,
 departure,
 arrival,
 FLOOR(TIMESTAMPDIFF(SECOND, departure, arrival) / 3600 / 24), ' days ',
 FLOOR(TIMESTAMPDIFF(SECOND, departure, arrival) % 3600 / 3600), ' hours ',
 FLOOR(TIMESTAMPDIFF(SECOND, departure, arrival) % 3600 % 60), ' minutes ',
 TIMESTAMPDIFF(SECOND, departure, arrival) % 60, ' seconds'
FROM travel;

hewy 7. Jan 2024 13:52

AW: Zeit zwischen zwei Time Felder
 
übrigens TimeDiff gibt es erst seit Version 3.43.0
Im projekt wo ich aktuell bin habe ich SQLite Version 3.1
Denke das ist Delphi Version abhängig. In meinem Fall XE5

hewy 7. Jan 2024 14:38

AW: Zeit zwischen zwei Time Felder
 
Also Problem gelöst,

Nach langem Probieren und internet durchlesen habe ich folgende Lösung erstellen können:
SELECT [InTime], [OutTime],
time(((strftime('%s', OutTime) - strftime('%s', InTime))), 'unixepoch') as Duration
FROM Tm_ShiftDetailPln

Ergebnis:
InTime OutTime TimeDiff
06:00:00 10:00:00 04:00:00
20:00:00 23:50:00 03:50:00
00:00:00 06:00:00 06:00:00
13:00:00 17:35:00 04:35:00
18:00:00 20:00:00 02:00:00
10:00:00 14:00:00 04:00:00

Scheint zu Funktionieren. Allerdings sehe ich jetzt gleich das nächste Problem. Mit der Zeit ohne Datum stimmt es dann nicht wenn OutTime nach mitternacht ist.
Also nochmals über die Bücher. Das aber erst morgen auf der Arbeit.
Dennoch Danke an alle für Eure Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

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