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

MySQL:come SUM() a TIMEDIFF() su un gruppo?

Usa:

  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

Passi:

  1. Usa TIME_TO_SEC per convertire TIME in secondi per operazioni matematiche
  2. Somma la differenza
  3. Usa SEC_TO_TIME per riconvertire i secondi in TIME

Sulla base dei dati di esempio, avrei appena suggerito:

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