• 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 之后

    时间差不进行处理

  • 相关阅读:
    .NET CORE QuartzJob定时任务+Windows/Linux部署
    .NET CORE 数据保护
    Docker容器间通信
    Docker加载本地证书
    转载-AppDomain详解
    JMeter尝鲜
    从String类型发散想到的一些东西
    npm源管理
    一张脑图整理Docker常用命令
    构造管“生”对象?析构管“埋”对象?C++中构造析构还没整明白?
  • 原文地址:https://www.cnblogs.com/LittleDuan/p/10719839.html
Copyright © 2020-2023  润新知