Mit Time und Date sinnvoll rechnen

Marco-P

Erfahrenes Mitglied
Hallo Leute,

ich möchte eine Zeiterfassung Programmieren aber diese Frage kann sich genauso auf Kalender usw beziehen überall wo es um Datum und Zeitformate geht.


So nun zu meinem Problem.
Bei einer Zeiterfassung hat man
  • Kommen-Zeit
  • Gehen-Zeit
  • Pausen-Zeit
  • Soll-Kommen
  • Soll-Gehen
Und wissen wollen wir
  • Effektive Arbeitszeit
  • Überstunden

So weit so gut aber das bedeutet ich muss zB
Gehen-Zeit - Kommen-Zeit - Pausen-Zeit = Effektive Arbeitszeit

Bei mySQL habe ich auch eine schöne Funktion gefunden (darauf hat mich jemand von hier gebracht ein Beitrag etwas weite runten) Aber da geht es nur mit zwei Zahlen aber nicht mit drei.

Umrechen in einen UNIX Timestamp geht über PHP.
Aber das ganze soll ja auch noch laufen bis nach 2037 (da ist nämlich ende mit der sekunden zählerei)

Bei UNIX Timestamp wäre das ja alles ganz einfach umrechnen, diffidieren oder addieren wie man will und wieder zurück rechnen.

Aber wie macht man das sonst. Es muss doch etwas geben in PHP womit ich so was errechnen kann. Wie macht ihr das?

Und welche Daten Typen nehmt ihr zur Zeit erfassung. Ich habe mich für DATETIME entschieden.

Ich freue mich auf anregende Gespräche und Diskusionen.

MFG Marco
 
Bei mySQL habe ich auch eine schöne Funktion gefunden (darauf hat mich jemand von hier gebracht ein Beitrag etwas weite runten) Aber da geht es nur mit zwei Zahlen aber nicht mit drei.

Du kannst MySQL-Funktionen auch verschachteln. Beispiel:

Code:
SELECT differenz_funktion(differenz_funktion(gehen_zeit, kommen_zeit), pausen_zeit) AS effektive_arbeitszeit WHERE....;
 
Nun, wenn du es schon in der DB hast, dann rechne es auch dort. Datumsrechnerei ist in MySQ einfacher wie in PHP

SQL:
SELECT
	TIME(TIMEDIFF(gehen, kommen)-pause) AS Arbeitszeit	
FROM
	--Simulation einer Tabelle zu Testzwecken
	(
		SELECT 
			TIMESTAMP('2011-06-21 08:12:37') AS kommen,
			TIMESTAMP('2011-06-21 17:37:32') AS gehen,
			TIME('01:12:00') AS pause
	) AS mytable;
 
Zuletzt bearbeitet von einem Moderator:
Ja genau das ist doch mal genau das was man dazu brauch.
Super Genial.

Ich hatte was mit Klammern ausprobiert aber das hat so nicht Funktioniert.
So wie ihr das schreibt macht das schon viel Sinn.
Das muss ich später mal ausprobieren.

MFG Marco
 
Zurück