Zeitdifferenz berechnen
Moderator: Moderatoren
Zeitdifferenz berechnen
Wie kann ich in einer Abfrage eine Zeitdifferenz berechnen und das Ergebniss im Zeitformat ausgeben. (HH:MM)
z.B. Zeit1 = 08:00 Zeit2= 17:15
z.B. Zeit1 = 08:00 Zeit2= 17:15
Re: Zeitdifferenz berechnen
Suche mal im Baseforum nach "Datediff"
Re: Zeitdifferenz berechnen
Code: Alles auswählen
SELECT DATEDIFF( 'mi', "Zeit1", "Zeit2" ) FROM "TABELLENNAME"
Wie du es in HH:MM formatieren kannst, kann ich dir nicht sagen. Danach suche ich selber noch.
Gruss
Sämtliche Probleme, welche ich ohne Computer nicht hatte, kann ich nun mit diesem lösen.
Re: Zeitdifferenz berechnen
Vielen Dank für Deine schnelle Hilfe.
Mit der Formel funktioniert es.
Ich habe jetzt das Ergebniss in Minuten.
Für die weitere Bearbeitung benötige ich jedoch unbedingt einen genauen Ausdruck als Stunden mit 2 Dezimalstellen hinter dem Komma.
Aber wenn ich in der Formel durch 60 teile kommt immer nur die entsprechende Ganzzahl, die nachkommastellen werden verschluckt.
Die eingegebene Formel sieht so aus:
SELECT "ID", "Datum", "Zeit1", "Zeit2", DATEDIFF( 'mi', "Zeit1", "Zeit2" ) / 60 FROM "Tabelle1"
Wie kann ich dieses letzte Problem noch lösen?
Vielen Dank im voraus.
Mit der Formel funktioniert es.
Ich habe jetzt das Ergebniss in Minuten.
Für die weitere Bearbeitung benötige ich jedoch unbedingt einen genauen Ausdruck als Stunden mit 2 Dezimalstellen hinter dem Komma.
Aber wenn ich in der Formel durch 60 teile kommt immer nur die entsprechende Ganzzahl, die nachkommastellen werden verschluckt.
Die eingegebene Formel sieht so aus:
SELECT "ID", "Datum", "Zeit1", "Zeit2", DATEDIFF( 'mi', "Zeit1", "Zeit2" ) / 60 FROM "Tabelle1"
Wie kann ich dieses letzte Problem noch lösen?
Vielen Dank im voraus.
Re: Zeitdifferenz berechnen
Der modulo-Befehl könnte hier helfen.
ergibt die Stunden und die Minuten als Rest, also bei 150 Minuten 2 Stunden und 30 Minuten.
Und wenn du unbedingt 2 Dezimalstellen brauchst, dann kannst du das mod-Ergebnis * 100 / 60 teilen und erhältst dann die 2 Dezimalstellen.
Problem ist nur, das zusammenzubringen.
Mit concat('2',',','50) erwartet man wohl 2,50, aber base zickt da rum, kann nur 2 werte bei concat fressen, daher der kleine Trick:
Damit kannst du aber nicht rechnen!!!!!!!
Dein Befehl lautet also:
alles klar? ich blick auch nicht mehr durch, ist aber ne lösung
Gruß,
Maik
Code: Alles auswählen
SELECT "ID", "Datum", "Zeit1", "Zeit2", DATEDIFF( 'mi', "Zeit1", "Zeit2" ) / 60 as stunden, mod(DATEDIFF( 'mi', "Zeit1", "Zeit2" )/60) as minuten FROM "Tabelle1"
Und wenn du unbedingt 2 Dezimalstellen brauchst, dann kannst du das mod-Ergebnis * 100 / 60 teilen und erhältst dann die 2 Dezimalstellen.
Problem ist nur, das zusammenzubringen.
Mit concat('2',',','50) erwartet man wohl 2,50, aber base zickt da rum, kann nur 2 werte bei concat fressen, daher der kleine Trick:
Code: Alles auswählen
concat('2',concat(',','50') und schon steht da 2,50
Dein Befehl lautet also:
Code: Alles auswählen
concat(DATEDIFF( 'mi', "Zeit1", "Zeit2" ) / 60,concat(',', mod(DATEDIFF( 'mi', "Zeit1", "Zeit2" )/60)*100/60))
Gruß,
Maik
Re: Zeitdifferenz berechnen
Hallo,
Hierfür muss "SQL direkt ausführen" aktiviert sein. Alle Tabellen, Spaltennamen usw. in Anführungsstriche setzen!
Gruß Barlee
Probier mal CASTbenötige ich jedoch unbedingt einen genauen Ausdruck als Stunden mit 2 Dezimalstellen hinter dem Komma.
Aber wenn ich in der Formel durch 60 teile kommt immer nur die entsprechende Ganzzahl, die nachkommastellen werden verschluckt.
Code: Alles auswählen
CAST(DATEDIFF( 'mi', "Zeit1", "Zeit2" ) AS DOUBLE) / 60 AS "TST"
Gruß Barlee
Re: Zeitdifferenz berechnen
Ich habe das etwas anders gelöst. Versuche es mal in dem du den errechneten wert nicht durch 60 sondern durch 60.00 teilst. dann bekommst du auch die nachkommastellen. Wenn du dann die abfrage durchgeführt hast kannst du die spalte umformatieren auf zeit und so wird aus 2,50 --> 2:30. In der Formaular abfrage kannst du das feld genauso formatieren und hast das was du wolltest.
Hier ein beispiel aus meiner Abfrage.
Arbeitsbegin 8:00
Arbeitende 16:00
Als ergebniss bekomme ich dann 0,33 und formatiere das nur noch in ein zeitformat um und schon wird daraus 8:00
mfg teakay
Hier ein beispiel aus meiner Abfrage.
Code: Alles auswählen
DATEDIFF( 'ss', "Arbeitsbegin", "Arbeitsende" ) / 3600.00
Arbeitende 16:00
Als ergebniss bekomme ich dann 0,33 und formatiere das nur noch in ein zeitformat um und schon wird daraus 8:00
mfg teakay
Meine Sys-Config ist ... zuviel um sie hier aufzulisten. Firmen Computer, Private Computer und etliche VMs