oralce的function处理考勤时间节点以及计算工作时间

例如:

上班时间为 8:30 到17:30,加班则到21:00;午休时间为1小时,(12:00-13:00);

晚间休息时间为半小时 (17:30-18:00),计算一批考勤数据的上班时间。

思路:

选择上班时间或者下班时中的一个作为大类进行区分,进行时间段划分;

选择另外一项作为小类,在大类的各个情况中按照小类来划分。这样会包含所有的情况,并且避免重复或者确实某一种情况。

解决方案:

首先将考勤数据按照上下班一一对应来进行数据整理。

其次将考勤时间进行归类。将8:30之前的上班时间 直接算为8:30,下班时间21:00之后算为21:00.

将两个时间做差,计算出时间差。将新整理的数据做成新的表或视图。

然后,在function进行继续处理,判断每一笔数据的上班时间和下班时间处于哪个时间段。

一、 上班时间在12:00 之前的情况

①下班时间在12:00之前,视图中的时间差不进行处理

②下班时间在12:00之后,并且在13:00之前的时间差要减去(下班时-12:00)

③下班时间在13:00之后,并且在17:30之前的时间差要减去1h

④下班时间在17:30之后,并且在18:00之钱的时间差要减去(1+(下班时间-17:30))

⑤下班时间在18:00之后,时间差减去 1.5h

二、上班时间在12:00之后,并且在13:00之前

①下班时间在13:00之前,时间差计算为0

②下班时间在13:00之后,并且在17:30之前时间差要减去(12:00-上班时间)

③ 下班时间在17:30之后,并且在18:00之前时间差要减去((12:00-上班时间)+(下班时间+17:30))

④下班时间在18:00之后,时间差要减去((12:00-上班时间)+0.5h)

三、上班时间在13:00之后,并且在17:30之前

①下班时间在17:30之前,时间差不进行处理

②下班时间在17:30之前,并且在18:00之前时间差要减去(下班时间-17:30)

③下班时间在18:00之后,时间差要减去0.5h

四、上班时间在17:30之后,并且在18:00之前

①下班时间在18:00之前,时间差不进行处理

②下班时间在18:00之后,时间差减去(18:00-上班时间)

五、上班时间在18:00 之后

时间差不进行处理

转载于:https://www.cnblogs.com/LittleDuan/p/10719839.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值