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.