Mysql
 sql >> Database >  >> RDS >> Mysql

Somma datediff in pochi minuti con MySQL

La tua condizione

WHERE tStart >= '2011-04-04' AND tEnd <= '2011-04-04'

Praticamente garantisce che gli unici record che rimarranno sono dove

tStart = tEnd = '2011-04-04'

Inutile dire che DATEDIFF tra di loro dà 0, per una somma totale di 0. In effetti, DATEDIFF ignora la parte del tempo, quindi è necessario utilizzare TIMEDIFF + TIME_TO_SEC

SELECT SUM(TIME_TO_SEC(TIMEDIFF(tEnd, tStart))/60)
FROM tasks
WHERE tStart >= '2011-04-04' AND tEnd <= adddate('2011-04-04', interval 1 day)

Notare la modifica alla clausola WHERE. Se stai cercando di dire, iniziato in qualsiasi momento oggi e terminato in qualsiasi momento oggi, l'intervallo dovrebbe essere (supponendo già inizio

WHERE tStart >= '2011-04-04'
  AND tEnd < adddate('2011-04-04', interval 1 day)

Puoi codificarlo in modo rigido su 2011-04-05, ma usando < (meno di) e l'aggiunta di un giorno al limite finale è ciò che sto mostrando qui.