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 之后
时间差不进行处理
oralce的function处理考勤时间节点以及计算工作时间的更多相关文章
- oracle处理考勤时间,拆分考勤时间段的sql语句
最近一直在用mysql数据库做云项目,有段时间没有接触oracle了,昨天有朋友叫我帮忙用oracle处理一个考勤记录的需求,我在考虑如何尽量精简实现上面花了一些时间.于是把这个实现做个总结. 需求如 ...
- 【原创】利用Windows系统日志统计员工每天上下班考勤时间
利用Windows系统日志统计员工每天上下班考勤时间(命令行参数为统计月份): using System; using System.Collections.Generic; using System ...
- PUSU 拆分后发货和开票的时间节点问题
项目做到现在业务突然说流程要变,心中顿时无数个草草草掠过.这公司业务也真是够奇葩了,一天一个样.原来流程是由PU把产品生产完后就发给SU,由SU再来决定什么时候对客户和开票.而现在马上要上线了,突然冒 ...
- CSS 竖线 点 时间节点
效果如图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Python - 记录我开始学习Python的时间节点
记录我开始学习Python的时间节点 2019-09-22 从明天开始我要开始学习Python了,坚持学习.坚持写博客,慢慢积累. 结合实例项目,最好能把目前在做的项目用Python实现. 加油!
- 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 安装Rocky版OpenStack 1控制节点+1计算节点环境部署脚本
在上一篇文章中叙述了具体的安装部署过程,在这里把相应的部署脚本写出来,供大家参考: 一.执行部署的setup.sh脚本: #!/bin/bash ########################### ...
- 脚本安装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 ...
- Java日期时间API系列21-----Jdk8中java.time包中的新的日期时间API类,xk-time时间转换,计算,格式化,解析的工具
通过工作之余,对Java8中java.time包源码的不断学习,使用和总结,开发了xk-time,初步完成,欢迎试用和提出建议! xk-time xk-time is a datetime conve ...
随机推荐
- Web前端数据存储
Cookie 会跟随每次请求附加到请求header上,大小限制4k. 部署对象: document.cookie 构成: Key-Value 有效期:根据expires配置 可选项: ;path=pa ...
- c# excel如何导入到sqlserver数据库
最近在做这个如何把excel导入到数据库中,经过多方查找,终于找到一个适合的,并且经过自己的完善可以正常使用(忘记原作者博客的链接地址了,敬请见谅) 首先是窗体的创建,文本框显示文件的路径,按钮执行操 ...
- Solr使用访问地址控制索引的,删除、创建
启动Solr,删除全部索引数据: http://localhost:8080/solr/update/?stream.body=<delete><query>*:*</q ...
- Ubuntu 16.04 安装 Python3.6
直接在官网下载 Python3.6.3 的源代码,解压缩,按照 README.rst 内说明步骤编译安装即可,这样 pip3.6 也会自动安装. 注意第一步配置时最好指定安装目录, $ ./confi ...
- OpenResty的现状、趋势、使用及学习方法
Nginx 是俄罗斯人发明的, Lua 是巴西几个教授发明的,中国人章亦春把 LuaJIT VM 嵌入到 Nginx 中,实现了 OpenResty 这个高性能服务端解决方案. 通过 OpenRest ...
- ubuntu16.04 pip install scrapy 报错处理
Failed building wheel for Twisted inculde/site/python3./Twisted failed with error code in tmp/pip-in ...
- 初次使用BAT,请检查Chrome浏览器和ChromeDriver兼容性
ChromeDriver可以理解为Chrome驱动,它是架在BAT程序和Chrome之间的桥梁.但是ChromeDriver的问题是,每个版本的兼容范围很窄,通常只能兼容3个Chrome版本. 因此, ...
- SOCKET选项
1. IP_TRANSPARENT [1]socket设置该选项后,可以处理发往非本机的数据包. [2]使用流程: 配置防火墙和路由: iptables -t mangle -A PREROUTING ...
- 刘志梅2017710101152.《面向对象程序设计(java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.理论知识 (1) 基本AWT库采用将处理用户界面元素的任务委派给每个目标平台的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的 ...
- Linux系统中lvm简介
LVM逻辑卷管理器 实战场景:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办? 答:只能换一个更大的磁盘.如果用了一段时间后,空间又不够了,怎么办?再加一块更大的?换磁盘的过程中, ...