Sua condição
WHERE tStart >= '2011-04-04' AND tEnd <= '2011-04-04'
Praticamente garante que os únicos registros que serão deixados são onde
tStart = tEnd = '2011-04-04'
Escusado será dizer que DATEDIFF entre eles dá 0, para uma soma total geral de 0. Na verdade, DATEDIFF ignora a parte do tempo, então você precisa usar 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)
Observe a alteração na cláusula WHERE. Se você está tentando dizer, começou a qualquer hora hoje e terminou a qualquer hora hoje, então o intervalo deve ser (já assumindo início
WHERE tStart >= '2011-04-04'
AND tEnd < adddate('2011-04-04', interval 1 day)
Você pode codificá-lo para 2011-04-05, mas usando
<
(menor que) e adicionar um dia ao limite final é o que estou mostrando aqui.