mysql有俩个字段一个是记录状态的,另一个是记录状态录入时间的,怎么计算一个状态的持续时间
任务ID | 状态 | 时刻 |
---|---|---|
1 | 初始化 | 2022-03-01 13:26:00 |
1 | 处理中 | 2022-03-02 14:27:00 |
1 | 处理完成 | 2022-03-03 15:28:00 |
以上面这个数据为例,你是想得到 初始化的时间为 处理中的时刻减去初始化的时刻是吧?
这个很典型的是要拿到下一行的记录,那么应该用开窗函数中的lead
select 任务ID,状态,开始时刻, lead(时刻) over(partition by 任务ID order by 时刻) 完成时刻 from 表;
至于计算持续时间,比较开始时刻和完成时刻这两个字段就行了,用timestampdiff这个函数
不同状态的时间差。(根据状态进行分组后,求相邻状态时间差)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!