例如:

上班时间为 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 之后

时间差不进行处理

oralce的function处理考勤时间节点以及计算工作时间的更多相关文章

  1. oracle处理考勤时间,拆分考勤时间段的sql语句

    最近一直在用mysql数据库做云项目,有段时间没有接触oracle了,昨天有朋友叫我帮忙用oracle处理一个考勤记录的需求,我在考虑如何尽量精简实现上面花了一些时间.于是把这个实现做个总结. 需求如 ...

  2. 【原创】利用Windows系统日志统计员工每天上下班考勤时间

    利用Windows系统日志统计员工每天上下班考勤时间(命令行参数为统计月份): using System; using System.Collections.Generic; using System ...

  3. PUSU 拆分后发货和开票的时间节点问题

    项目做到现在业务突然说流程要变,心中顿时无数个草草草掠过.这公司业务也真是够奇葩了,一天一个样.原来流程是由PU把产品生产完后就发给SU,由SU再来决定什么时候对客户和开票.而现在马上要上线了,突然冒 ...

  4. CSS 竖线 点 时间节点

    效果如图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. Python - 记录我开始学习Python的时间节点

    记录我开始学习Python的时间节点 2019-09-22 从明天开始我要开始学习Python了,坚持学习.坚持写博客,慢慢积累. 结合实例项目,最好能把目前在做的项目用Python实现. 加油!

  6. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  7. 安装Rocky版OpenStack 1控制节点+1计算节点环境部署脚本

    在上一篇文章中叙述了具体的安装部署过程,在这里把相应的部署脚本写出来,供大家参考: 一.执行部署的setup.sh脚本: #!/bin/bash ########################### ...

  8. 脚本安装Rocky版OpenStack 1控制节点+1计算节点环境部署

    视频安装指南请访问: http://39.96.203.138/wordpress/document/%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85rocky%E7%89%8 ...

  9. Java日期时间API系列21-----Jdk8中java.time包中的新的日期时间API类,xk-time时间转换,计算,格式化,解析的工具

    通过工作之余,对Java8中java.time包源码的不断学习,使用和总结,开发了xk-time,初步完成,欢迎试用和提出建议! xk-time xk-time is a datetime conve ...

随机推荐

  1. 交互课件用什么软件------承接教育类k12/幼儿html5交互课件/动画外包

    flash交互课件能生动表达教学内容,也深受广大教育工作者的喜爱,但是目前flash课件只能在pc电脑平台上进行展示,随着移动网络的发展,Adobe宣布2020年停止对flash更新和维护,越来越多的 ...

  2. 微软MSDN原版Windows Server 2008 R2 With SP1下载

    Windows Server 2008 R2是windows 服务器版本Windows Server 2008 R2继续提升了虚拟化.系统管理弹性.网络存取方式,以及信息安全等领域的应用,其中有不少功 ...

  3. 解决WIN7第一次开机冷启动QQ未响应的办法

    为什么WIN7第一次开机冷启动QQ未响应?WIN10就没事? http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409516&extr ...

  4. 20175311 《Java程序设计》第三周学习总结

    20175311 2018-2019-2 <Java程序设计>第3周学习总结 教材学习内容总结 在蓝墨云中的教程里学习了如何安装IDEA,并且尝试了自己破解IDEA 主要在看书时,对jav ...

  5. Logic and Proofs--离散数学

    Propositions: A proposition is a declarative sentence(that is, a sentence that declares a fact ) tha ...

  6. AX2012 ERP “系统慢”调优---跟踪SQL执行,优化代码

    对于用户来说,系统是:慢的,难用的.你看xxx,多好用,多快,多人性化. 对于AX ERP系统也不例外,调优是必须的,调优一般分为几种: 系统性监测针对瓶劲环节提升,如:用户--应用服务器--DB-- ...

  7. 生成器函数_yield_yield from_send

    生成器函数 ''' yield类似于return 相同: 都返回出去一个值 不同: yield每次返回时, 会记录当前执行的位置 等下次调用生成器, 会从该位置向下走 return 直接终止函数 '' ...

  8. oracle表的基本操作

    --修改名称rename l_user_info to t_user_info --添加带有约束的表 create table t_user_menu( id number(20) primary k ...

  9. 思维导图工具XMind下载

    XMind 是一款非常实用的商业思维导图软件,全力打造易用.高效的可视化思维软件,强调软件的可扩展.跨平台.稳定性和性能,致力于使用先进的软件技术帮助用户真正意义上提高生产率.XMind 支持 在Wi ...

  10. 搭建Hadoop

    最近开始学习hadoop现实是完全分布式 安利大佬博客学习 https://blog.csdn.net/downing114/article/details/60956979 在Ubuntu上学习  ...