自动剔除非工作时间的计算工作函数

需积分: 47 20 下载量 95 浏览量 更新于2024-08-12 2 收藏 7KB TXT 举报
"该资源提供了一个名为`zky_work_minute_sum`的自定义函数,用于计算两个时间点之间的工作时间,自动排除非工作时间和特定的午休及节假日。该函数适用于MySQL环境,需要设置`setgloballog_bin_trust_function_creators=TRUE;`以允许创建。函数接受三个参数:开始时间、结束时间和月份,返回值为整型,表示工作分钟数。" 在编程领域,计算工作时间是一个常见的需求,尤其是在员工考勤或项目管理中。`zky_work_minute_sum`函数设计巧妙,考虑到了工作日的上下班时间以及可能的加班情况。它首先通过`DECLARE`语句声明了一系列变量来存储输入时间的日期、时间、星期几等信息,然后根据月份来确定不同日期的上下班时间,如上午上班时间(`am_st_time`)、上午下班时间(`am_ed_time`)、下午上班时间(`pm_st_time`)和下午下班时间(`pm_ed_time`)。 函数的核心部分在于如何判断并计算工作时间。它会分别计算上午和下午的工作时长,考虑到中午休息时间和非工作日的情况。例如,如果开始时间在上午下班之后,或者结束时间在下午上班之前,那么这两个时间段都不会计入工作时间。同时,根据输入的月份,函数可能需要调整以适应不同的工作日作息。对于节假日,函数可能也需要做出相应处理,比如不计入工作时间。 函数最后将上午和下午的工作分钟数累加得到一天的工作总时长,并将结果存储在`work_minute`变量中。如果存在加班情况,例如晚上的加班或周末加班,计划的更新将能够处理这些特殊情况,确保准确计算工作时间。 这个函数对于需要精确计算工作时间的系统来说非常实用,可以避免手动排除非工作时间的繁琐步骤,提高了效率。用户只需要按照提供的格式调用`zky_work_minute_sum(开始时间, 结束时间, 月份)`,即可获得准确的工作分钟数。注意,使用此函数前需要确保数据库环境支持自定义函数,并正确设置权限。 `zky_work_minute_sum`函数是解决工作时间计算问题的一个高效解决方案,尤其适用于需要自动排除非工作时间的情况。其设计灵活,可以适应不同作息时间和特殊工作日的调整,是管理考勤记录或项目工时的理想工具。