本文目的是记录日常开发中用到的知识点,不涉及具体业务,只关注技术,方便自己和后来者。
目前正在做一个工厂项目,说到工厂项目肯定会有关于产线和人员的排班时长计算,一般一条排班信息包括开始时间、结束时间以及人员或产线的标识。那么常见需求比如统计某个月份产线或者人员的工作时长、计算设备开动率、OEE等。以上需求都涉及到计算每次排班时长(结束时间-开始时间)的操作,这个时长计算在数据库端或者服务器端都可以进行,本文重点介绍下通过oracle相关函数来计算时长,老规矩,先贴表结构和数据样例,大家自行查看:
下面先看一条简单的数据如下图,通过表结构可以知道MA06产线的开始时间:2020-10-12 08:00:00,结束时间:2020-10-12 19:00:00,时长:11小时
接下来我们开始通过sql计算时长,首先执行如下sql,sql和结果如下图所示:
-- 用结束字段 - 开始字段 , planid只起到筛选数据用,无视
select endtime - starttime from mes_shiftproject where planid = '5475604'