Zeitdifferenz berechnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Lehrling
Beiträge: 2
Registriert: Do, 22.05.2008 13:23

Zeitdifferenz berechnen

Beitrag von Lehrling »

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
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Re: Zeitdifferenz berechnen

Beitrag von berndkli »

Suche mal im Baseforum nach "Datediff"
hema
***
Beiträge: 70
Registriert: So, 27.01.2008 14:36
Wohnort: Schweiz
Kontaktdaten:

Re: Zeitdifferenz berechnen

Beitrag von hema »

Code: Alles auswählen

SELECT DATEDIFF( 'mi', "Zeit1", "Zeit2" ) FROM "TABELLENNAME"
gibt dir die Zeitdifferenz in Minuten aus.

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.
Lehrling
Beiträge: 2
Registriert: Do, 22.05.2008 13:23

Re: Zeitdifferenz berechnen

Beitrag von Lehrling »

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.
muhl
**
Beiträge: 39
Registriert: Di, 09.02.2010 14:48

Re: Zeitdifferenz berechnen

Beitrag von muhl »

Der modulo-Befehl könnte hier helfen.

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"
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:

Code: Alles auswählen

concat('2',concat(',','50') und schon steht da 2,50
Damit kannst du aber nicht rechnen!!!!!!!

Dein Befehl lautet also:

Code: Alles auswählen

concat(DATEDIFF( 'mi', "Zeit1", "Zeit2" ) / 60,concat(',', mod(DATEDIFF( 'mi', "Zeit1", "Zeit2" )/60)*100/60))
alles klar? ich blick auch nicht mehr durch, ist aber ne lösung

Gruß,

Maik
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zeitdifferenz berechnen

Beitrag von Barlee »

Hallo,
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.
Probier mal CAST

Code: Alles auswählen

CAST(DATEDIFF( 'mi', "Zeit1", "Zeit2" ) AS DOUBLE) / 60 AS "TST" 
Hierfür muss "SQL direkt ausführen" aktiviert sein. Alle Tabellen, Spaltennamen usw. in Anführungsstriche setzen!

Gruß Barlee
Benutzeravatar
teakay
***
Beiträge: 82
Registriert: Mi, 28.09.2005 08:47
Wohnort: Somewhere over the Rainbow.

Re: Zeitdifferenz berechnen

Beitrag von teakay »

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.

Code: Alles auswählen

DATEDIFF( 'ss', "Arbeitsbegin", "Arbeitsende" ) / 3600.00
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
Meine Sys-Config ist ... zuviel um sie hier aufzulisten. Firmen Computer, Private Computer und etliche VMs
Antworten