Zeitdifferenz berechnen

Datenbanklösungen mit OOo

Moderator: Moderatoren

Zeitdifferenz berechnen

Beitragvon Lehrling » Do, 22.05.2008 12:36

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

Re: Zeitdifferenz berechnen

Beitragvon berndkli » Fr, 23.05.2008 01:10

Suche mal im Baseforum nach "Datediff"
berndkli
*****
 
Beiträge: 284
Registriert: Di, 12.04.2005 21:05

Re: Zeitdifferenz berechnen

Beitragvon hema » Fr, 23.05.2008 10:00

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.
hema
***
 
Beiträge: 70
Registriert: So, 27.01.2008 14:36
Wohnort: Schweiz

Re: Zeitdifferenz berechnen

Beitragvon Lehrling » Fr, 23.05.2008 10:04

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

Re: Zeitdifferenz berechnen

Beitragvon Theo66 » Mi, 10.03.2010 14:03

Habe das gleiche Problem. Hat wer ne Lösung?
Theo66
 

Re: Zeitdifferenz berechnen

Beitragvon muhl » Mi, 10.03.2010 14:53

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

Re: Zeitdifferenz berechnen

Beitragvon Barlee » Mi, 10.03.2010 18:11

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
Barlee
******
 
Beiträge: 738
Registriert: Sa, 17.12.2005 12:27

Re: Zeitdifferenz berechnen

Beitragvon teakay » Do, 11.03.2010 12:02

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
Benutzeravatar
teakay
***
 
Beiträge: 82
Registriert: Mi, 28.09.2005 07:47
Wohnort: Somewhere over the Rainbow.


Zurück zu OOo Base / SQL

Wer ist online?

Mitglieder in diesem Forum: slu und 7 Gäste