Einfache Zeitberechnung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

mardy
Beiträge: 3
Registriert: Sa, 08.08.2009 23:22

Einfache Zeitberechnung

Beitrag von mardy »

Hallo,

ich hebe mir eine kleine private Datenbank angelegen, und habe jetzt das Problem das ich meine Arbeitszeit nicht berechnet bekomme. ich habe mich mich auch schon hier im Forum umgeschaut und nach eine Lösung gesucht, bin aber aus den Skripten nicht schlau geworden.

Die zur Berechnung benötigten Zeilen sehen folgendermaßen aus.

Code: Alles auswählen

Feldname:    beginn        ende
Feldtyp:     Zeit[Time]   Zeit[Time]
nun habe ich mir gedacht, um die Zeit zwischen den beiden Zeitpunkten zu ermitteln muss ich ende - beginn rechnen. Es handelt sich immer um ein und den selben Tag, was die Beachtung von tagen unnötig macht.

mein Code sieht wie folgt aus:

Code: Alles auswählen

SELECT beginn - ende AS Arbeitszeit
FROM tbl_datum_zeit;
mit der Fehlermeldung :

Die Dateninhalte konnten nicht geladen werden.

SQL-Status: 37000
Fehler-Code: -16

Wrong data type: java.lang.NumberFormatException in statement [SELECT "beginn" - "ende" AS "Arbeitszeit" FROM "tbl_datum_zeit"]


Das SQL-Kommando, welches zu diesem Fehler führte, ist:

SELECT "beginn" - "ende" AS "Arbeitszeit" FROM "tbl_datum_zeit"


Nun meine Frage, welchen Zusatz muss ich einfügen das er mir die Zeit errechnet ?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Einfache Zeitberechnung

Beitrag von komma4 »

Ich nehme mal an, dass Du mit der eingebauten HSQLDB arbeitest.
HSQLDB kann hier sehr wenig.

Die Doku dazu findest Du hier:
http://hsqldb.org/web/hsqlDocsFrame.html


Nehme die DATEDIFF Funktion zum Berechnen, ggfs. mit CONCAT zusammensetzen, etwa:

Code: Alles auswählen

SELECT CONCAT( DATEDIFF('hour', beginn , ende ) , DATEDIFF('minute', beginn , ende ) ) AS Arbeitszeit FROM tbl_datum_zeit
[ungetestet - aus'm Kopp]
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mardy
Beiträge: 3
Registriert: Sa, 08.08.2009 23:22

Re: Einfache Zeitberechnung

Beitrag von mardy »

Danke,

hat mich auf die richtige Spur gebracht! Hätte mich wohl mal mit der DATEDIFF Funktion auseinandersetzen sollen. Habe nun ein Statement, was mir die Stunden und Minuten einzeln ausgibt:

Code: Alles auswählen

SELECT DATEDIFF('hour' ,beginn, ende ) AS Stunden ,
(DATEDIFF ('minute' ,beginn , ende) - (DATEDIFF('hour' ,beginn , ende) * 60)) AS Minuten
FROM tbl_datum_zeit
Nun kommen 2 Spalten heraus. Stunden und Minuten . Ich frage mich jetzt nun ob ich diese beiden zusammenfügen kann, so dass eine Spalte herauskommt die Arbeitszeit heißt und mir z.B. 9:30 ausgibt. Letztendlich soll das dann auf ein Formular als eine Spalte.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Einfache Zeitberechnung

Beitrag von komma4 »

mardy hat geschrieben:ob ich diese beiden zusammenfügen kann
siehe oben: CONCAT()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mardy
Beiträge: 3
Registriert: Sa, 08.08.2009 23:22

Re: Einfache Zeitberechnung

Beitrag von mardy »

GELÖST

Danke noch mal für die Hinweise, mit zwei CONCAT war die Aufgabe letztendlich zu lösen.

Code: Alles auswählen

SELECT CONCAT ( CONCAT (DATEDIFF( 'hour', "beginn", "ende" ), ':' ), 
(DATEDIFF ('minute', "beginn","ende" ) - (DATEDIFF('hour',"beginn","ende") * 60))) AS Arbeitszeit
FROM "tbl_datum_zeit";
Damit am Ende in der Spalte folgende Lösung rauskommt.

Code: Alles auswählen

Arbeitszeit
7:30
7 Stunden und 30 Minuten

MFG Mardy
Antworten