Seite 1 von 1

Einfache Zeitberechnung

Verfasst: So, 09.08.2009 00:18
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 ?

Re: Einfache Zeitberechnung

Verfasst: So, 09.08.2009 00:47
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]

Re: Einfache Zeitberechnung

Verfasst: So, 09.08.2009 12:45
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.

Re: Einfache Zeitberechnung

Verfasst: So, 09.08.2009 15:00
von komma4
mardy hat geschrieben:ob ich diese beiden zusammenfügen kann
siehe oben: CONCAT()

Re: Einfache Zeitberechnung

Verfasst: So, 09.08.2009 19:06
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