Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Comment SUM() a TIMEDIFF() sur un groupe ?

Utiliser :

  SELECT t.user_id,       
         SEC_TO_TIME(SUM(TIME_TO_SEC(t.endtime) - TIME_TO_SEC(t.starttime))) AS timediff
    FROM MYTABLE t
GROUP BY t.user_id

Étapes :

  1. Utilisez TIME_TO_SEC pour convertir TIME en secondes pour une opération mathématique
  2. Sommez la différence
  3. Utilisez SEC_TO_TIME pour reconvertir les secondes en TIME

Sur la base des données de l'échantillon, j'aurais simplement suggéré :

  SELECT t.user_id,       
         TIMEDIFF(MIN(t.startdate), MAX(t.enddate)) AS timediff
    FROM MYTABLE t
GROUP BY t.user_id