首先数据是这样的
ID | date | start_time | end_time |
1 | 2021-06-01 | 09:00:00 | 10:00:00 |
1 | 2021-06-02 | 09:00:00 | 09:00:01 |
2 | 2021-06-01 | 09:00:00 | 09:01:30 |
2 | 2021-06-02 | 09:00:00 | 09:01:30 |
我想统计当月每个ID的总时长
select a.id, function
from tableName a
where a.date like '2021-06%' group by a.user_id
funtion这里就应该是计算,计算差值并求和是这样的
SEC_TO_TIME(sum(TIME_TO_SEC(a.end_time)-TIME_TO_SEC(a.start_time)))
放进去,sql就应该是这样的,先把时间转成秒,加算,再转成时间。
select a.id, SEC_TO_TIME(sum(TIME_TO_SEC(a.end_time)-TIME_TO_SEC(a.start_time)))
from tableName a
where a.date like '2021-06%' group by a.user_id
如果不转成秒,直接用timediff直接减算再用sum函数,计算的时候就会变成百分制。
例如 ID为2的数据,理想结果应该是180。可是结果是260