Twój stan
WHERE tStart >= '2011-04-04' AND tEnd <= '2011-04-04'
Prawie zapewnia że jedyne rekordy, które pozostaną, to tam, gdzie
tStart = tEnd = '2011-04-04'
Nie trzeba dodawać, że DATEDIFF między nimi daje 0, co daje całkowitą sumę 0. W rzeczywistości DATEDIFF ignoruje część czasu, więc musisz użyć 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)
Zwróć uwagę na zmianę w klauzuli WHERE. Jeśli chcesz powiedzieć, że rozpoczął się o dowolnej porze dzisiaj i zakończył o dowolnej porze dzisiaj, zakres powinien wynosić (już zakładając początek
WHERE tStart >= '2011-04-04'
AND tEnd < adddate('2011-04-04', interval 1 day)
Możesz zakodować go na stałe do 2011-04-05, ale używając <
(mniej niż) i dodanie jednego dnia do limitu końcowego jest tym, co pokazuję tutaj.