sql >> Databasteknik >  >> RDS >> Mysql

Summa datediff i minuter med MySQL

Ditt tillstånd

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

Ganska mycket försäkrar att de enda poster som kommer att finnas kvar är var

tStart = tEnd = '2011-04-04'

Det säger sig självt att DATEDIFF mellan dem ger 0, för en totalsumma av 0. Faktum är att DATEDIFF ignorerar tidsdelen, så du måste använda 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)

Lägg märke till ändringen av WHERE-satsen. Om du försöker säga, startade när som helst idag och slutade när som helst idag, bör intervallet vara (redan antar start

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

Du kan hårdkoda den till 2011-04-05, men med < (mindre än) och att lägga till en dag till slutgränsen är vad jag visar här.




  1. Hur man kodar kyrilliska i mysql?

  2. CakePHP - Söker 3 bord effektivt med JOIN

  3. Hur använder man MAX() på ett delfrågeresultat?

  4. Hur kan jag få offset för en viss rad i MySQL?