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

Sum datediff i minutter med MySQL

Din tilstand

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

Stort set sikrer at de eneste poster, der vil være tilbage, er hvor

tStart = tEnd = '2011-04-04'

Det siger sig selv, at DATEDIFF mellem dem giver 0, for en totalsum på 0. Faktisk ignorerer DATEDIFF tidsdelen, så du skal bruge 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)

Bemærk ændringen af ​​WHERE-klausulen. Hvis du prøver at sige, startede når som helst i dag og sluttede når som helst i dag, så skal intervallet være (allerede forudsat start

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

Du kan hardkode det til 2011-04-05, men ved at bruge < (mindre end) og tilføjelse af én dag til slutgrænsen er, hvad jeg viser her.




  1. indre sammenføjning med tomt resultat fra højre tabel

  2. MySQL EXPLAIN 'type' ændres fra 'range' til 'ref', når datoen i where-sætningen ændres?

  3. Mysql Opdatering af en post med en værdi fra den forrige post

  4. Bruger forskellige databaser forskellige navnecitater?