MySQL:计算不同表行中两个时间戳的差异

时间:2019-06-19 06:31:02

标签: mysql sql mysqli

我一直在StackOverflow周围寻找类似的问题,但似乎找不到。我想知道按员工ID分组的不同行中的时间戳之间的区别。

时间记录表:

id        timestamp             log_type
 1    2019-06-19 12:34:50        log_in
 2    2019-06-19 13:12:46       start_break 
 3    2019-06-19 13:13:56        end_break
 4    2019-06-19 17:23:40       start_break
 5    2019-06-19 17:44:36        end_break
 6    2019-06-19 19:00:04       start_break
 7    2019-06-19 19:03:17         end_break
 8    2019-06-19 20:05:54        log_out

我要完成的工作是计算所有休息时间。在这种情况下,第1个中断(ID#2和#3)为1分钟10秒,第2个中断(ID#4和#5)为20分钟56秒,第3个中断(ID#6和#7)为3分钟和13秒,总共25分钟和19秒。

感谢您的帮助!非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以在下面尝试-

DEMO

array

输出:

select SEC_TO_TIME(sum(diff)) as result from
(
select  
timestampdiff(second,min(case when log_tpe='start_break' then timestamps end) ,
min(case when log_tpe='end_break' then timestamps end)) as diff
from t
group by date(timestamps),hour(timestamps)
)A