Ho questa tabella denominata time_track:MySQL - PHP: Calcola ore totali in un giorno tra più eventi
+----+--------+---------------------+---------+
| id | emplid | ctimestamp | eventid |
+----+--------+---------------------+---------+
| 1 | 13 | 2016-06-02 03:41:41 | 1 |
+----+--------+---------------------+---------+
| 2 | 13 | 2016-06-02 09:04:49 | 2 |
+----+--------+---------------------+---------+
| 3 | 13 | 2016-06-02 10:03:13 | 1 |
+----+--------+---------------------+---------+
| 4 | 13 | 2016-06-02 13:21:23 | 2 |
+----+--------+---------------------+---------+
dove eventid 1 = Start work
e eventid 2 = Stop work
.
Come posso calcolare le ore di un dato giorno tenendo conto che le ore di lavoro sono le ore totali tra tutti eventid di 1 e 2-WHERE emplid = 13 AND Year(ctimestamp) = 2016 and Month(ctimestamp) = 06 and Day(ctimestamp) = 02
Cosa intendi per "ore totali in un giorno"? Vuoi dire solo ore totali tra i due timestamp? – Devon
Penso che sia un timesheet - quindi Fred entra alle 03:41 e lavora fino alle 09:04 ... fa un pisolino per un'ora e torna di nuovo alle 10:03 fino alle 13:21 - quindi è quell'ammontare cumulativo. Tuttavia, se * * * viene interrotto di giorno, le 21:00 -> 04:00 causeranno problemi poiché il giorno specificato avrà un evento * stop work * ma nessun evento * start work * precedente. – CD001
Si tratta di una query che verrà eseguita frequentemente sul database in modo che le prestazioni delle query siano fondamentali? In tal caso, sei disposto a prendere in considerazione uno schema alternativo? Come pensate di affrontare le condizioni marginali come quelle indicate sopra da @ CD001 oi casi in cui vi sono tempi di fine/inizio non appaiati (cioè dati incompleti)? –