2 dongkaih dongkaih 于 2015.06.01 15:51 提问

考勤系统中考勤排班和结果计算

对于考勤系统中的班次,出现跨天的情况,在这种情况下,如何设计表结构,如何计算考勤结果

3个回答

caozhy
caozhy   Ds   Rxr 2015.06.01 16:26

可以把日期转换成浮点数来计算。日期浮点数是这样的数:如果两个时间差1天,那么就差1,如果差1小时,就差1/24,以此类推。不用理会跨天还是跨月。它永远和时间差对应。

dongkaih
dongkaih 最主要是考勤结果的计算,要跟请假,排班,加班关联起来出报表
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao   Rxr 2015.06.01 16:00

你用分钟数表示排班的起至时间,设置的时候就可以超过24:00 了。
转换成实际时间,就用当天0点 + 开始分钟数当天0点 + 结束分钟数,得到的时段自然就跨天了。

Tiger_Zhao
Tiger_Zhao 回复dongkaih: 要看详细再开个子表,把一个请假单(3天)和多个班次有交叉的时段都切割出来,主键是(班次ID、请假单ID)。很直观的做法,按需求设计啊!
2 年多之前 回复
dongkaih
dongkaih 回复Tiger_Zhao:要做的就是班次要连对应的请假时段记录都能查到,精确到半小时以内,如果只做统计就太简单了
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao 回复dongkaih: 请假单独一个表啊。比如一次请假3天,不是全部72小时,而是3天时段中的3个班次。根据请假单更新班次的请假时数,班次是不能直接记录请假时段的。
2 年多之前 回复
dongkaih
dongkaih 回复dongkaih: 能方便留个联系方式吗
2 年多之前 回复
dongkaih
dongkaih 回复Tiger_Zhao: 那也只是只能知道每个班次请假几小时,要具体到那几个小时请假,那几个小时加班,而且日期有可能跨天,跟跨天的排班没能很好关联
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao 回复dongkaih: 打卡记录作为单独的明细表。请假也作为单独的明细表(允许一个班次中请多次)。你可以根据排班生成每个人当天规定的上下班时间,然后根据打卡填入实际的上下班时间,根据请假填入请假小时数。
2 年多之前 回复
dongkaih
dongkaih 最主要是考勤结果的计算,要跟请假,排班,加班关联起来出报表,这个我也知道,就是想探讨下详细解决方案
2 年多之前 回复
sumcul
sumcul   2015.06.09 12:27

可以设计两个字段,一个字段是在岗设计,一个字段是跨天。

这样简单方便。

Csdn user default icon
上传中...
上传图片
插入图片