![]() |
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 |
AW: Zeit zwischen zwei Time Felder
Hmm, aus dem Kopf: TimeDiff(time1, time2)
|
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 |
AW: Zeit zwischen zwei Time Felder
Das hilft aber innerhalb des SQL nicht viel.
|
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 |
AW: Zeit zwischen zwei Time Felder
Zitat:
![]() |
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. |
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; |
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 |
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