php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.03.2006, 18:57  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard Berechnung von Stempelzeiten

Hallo alle zusammen,

ich habe die Aufgabe Arbeitszeiten anhand von Stempeldaten zu ermitteln. Die Stempeldaten liegen in einer Tabelle folgendermaßen vor:

ID autoincrement PRIMARY
Datum/Zeit DATETIME
Mitarbeiter -ID = Eindeutige ID des Mitarbeiters
ART - 1 für Beginn, 2 für Ende

Es geht nun darum die Arbeitszeiten der Mitarbeiter für einen gegebenen Zeitraum zu ermitteln. Also die Summe der Differenz zwischen 1-Beginn und 2-Ende. Beginn und Ende kann pro Tag und Mitarbeiter mehrmals erfolgen. Jeder Tag endet mit 2-Ende.

Leider fehlt mir im Moment jegliche Idee, wie ich das per SQL lösen könnte. Wäre für jeden Tipp oder auch Lesematerial für ähnliche Probleme dankbar.

Ratte
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.03.2006, 20:02  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Da du pro Startzeit auch eine Endzeit benötigst, würde ich die Tabelle folgendermaßen umbauen:
ID
Mitarbeiter
Datum DATE
Start TIME
Ende TIME

Damit sollte dann das Erstellen einer entsprechende Abfrage auch kein großartiges Problem mehr darstellen.
Und wenn doch: Einfach fragen.
xabbuh ist offline   Mit Zitat antworten
Alt 02.03.2006, 20:07  
Gast
 
Beiträge: n/a
Standard

Date and Time Functions

Beispiel:
Code:
select sec_to_time(UNIX_TIMESTAMP("2006-03-02 18:05:00") - UNIX_TIMESTAMP("2006-03-02 07:30:00")) as timediff
Ergebnis:
Code:
timediff 	
10:35:00
Zur Summe:
Code:
Select Mitarbeiterid, sec_to_time( Sum( UNIX_TIMESTAMP(`ende`) - UNIX_TIMESTAMP(`anfang`) ) ) as Gesamt From Tabelle Group by Mitarbeiterid
  Mit Zitat antworten
Alt 02.03.2006, 20:33  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

@xabbuh
@cptpicard

Vielen Dank für die Tipps.

Habe dann aber ein weiteres Problem. Ich müsste die bisherige Tabelle konvertieren und die Programme (die die Daten schreiben) entsprechend anpassen.
Das werde ich wohl auch machen, da die bisherige Berechnung über PHP einfach viel zu langsam ist. Insbesonder wenns an die Jahresübersicht geht 8->

Ich bin aber nachwievor an einer Lösung mit der bestehenden Tabelle interresiert, da mir solche Konstruktionen sicher noch öfter unter die Finger kommen.

Gruß Ratte
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline   Mit Zitat antworten
Alt 03.03.2006, 10:38  
Gast
 
Beiträge: n/a
Standard

Ich würde ein PHP-Programm schreiben, daß die Daten mit Schleifen auswertet...

ungefähr so für die aktuelle monatsauswertung:
Code:
for (jeden $Mitarbeiter)
{
select from mitarbeiter where month(datum)=month(curdate()) and art=1 and mitarbeiter_id=$Mitarbeiter
for (jede mysql_num_rows)
{
   Startzeit auslesen
   Endzeit suchen
   Tagessumme bilden
   zu Gesamtsumme addieren
   Tagesdaten ausgeben
   (evt. in eine zweite Tabelle nach xabbuhs vorbild speichern, mit tagessumme)
}
Gesamtsumme ausgeben
}
Dürfte eigentlich auch bei einigen hundert Mitarbeitern (Näherung: 100 Mitarbeiter * 20 Arbeitstage * 2 Datensätze = 4.000 Datensätze pro Monat = 48.000 pro Jahr) mit PHP einigermassen schnell funktionieren. Wenn er für die Jahreabrechnung dann mal 5 oder 10 Minuten braucht, ist das ja denke ich verkraftbar...
  Mit Zitat antworten
Alt 03.03.2006, 19:43  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

@philneu

Danke. Aber so, oder so ähnlich hab ich es bisher.
Die Geschwindigkeit lässt aber stark zu wünschen übrig.
Rechnung: 320 Mitarbeiter, 5 Arbeitstage. Pro Tag Anfang/Ende im Idealfall nur 1 Mal. Plus Pause Beginn und Ende. Mindestens 3 Mal, oft mehr.
Damit ist das PHP Programm gute 15 Sec beschäftigt. Sofern der Server sich in einem "entspannten" Zustand befindet.
Die Chefs haben aber viel Freude daran, ständig diese Monatsübersichten aufzurufen und sind über die Reaktionszeit nicht begeistert. Darunter leidet natürlich auch der Gesamtdurchsatz.
Meine Übergangslösung wird wohl sein, die zurückliegenden Monate zwischenzuspeichern, in der Annahme das sich die Daten nicht mehr ändern und den laufenden Monat für die Dauer einer Session nur einmal zu berechnen.
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Berechnung über mehrere Abfragen aus mysql Slappi PHP Tipps 2008 2 18.12.2007 14:22
karma berechnung? Err0r! PHP-Fortgeschrittene 4 10.11.2007 11:57
Berechnung in MySQL-Abfrage maeck Datenbanken 8 09.10.2007 23:22
Probleme bei berechnung in einer abfrage Fraylman PHP Tipps 2007 18 14.03.2007 16:36
[Erledigt] Berechnung nicht ganz korrekt PHP Tipps 2005-2 6 20.06.2005 16:42
berechnung im select für eine andere berechnung benutzen Datenbanken 4 13.05.2005 11:29
Komplizierte Berechnung - HILFE! djma PHP Tipps 2005 8 25.04.2005 21:38
Welchen Datentyp für Currency(Währungs Berechnung)? Paulo Datenbanken 1 07.03.2005 11:38
Berechnung der dritten Wurzel PHP Tipps 2005 3 07.02.2005 09:15
Berechnung gibt falsches Ergebnis aus stefan-miti PHP Tipps 2004-2 13 26.12.2004 15:30
Problem bei (einfacher) Berechnung PHP Tipps 2004-2 2 26.11.2004 13:40
Problem mit mathematischer Berechnung PHP-Fortgeschrittene 2 23.09.2004 19:53
Berechnung mit 2 Variablen PHP Tipps 2004 3 06.09.2004 22:00
HH:MM --> Javascript berechnung HTML, Usability und Barrierefreiheit 1 23.07.2004 16:27
Paradox, Fehler bei Berechnung in MySQL MrNiceGuy Datenbanken 0 23.06.2004 16:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
stempelzeiten, stempelzeiten berechnen, stempelzeiten ausrechnen, stempelzeit umrechnen, php arbeitszeiten, stempelzeiten ändern, stempelzeiten tabelle, umrechnung stempelzeiten, stempelzeiten umrechnen, arbeitszeiten php, wie wird die stempelzeit berechnet, stempelzeit berechnen, stempelzeit berechnen php, berechnen der stempelzeit, länge der stempelzeit, stempelzeit ausrechnen, php arbeitszeit berechnen, stempelzeit tabelle, php 2 tage zurückliegendes datum berechnen, startzeit endzeit differenz berechnen php

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.