SQL-剔除周六⽇,节假⽇,⾮⼯作时间
需求是:求每个请求ID操作时间和验收时间之间的间隔,需要剔除周六⽇,节假⽇,⾮⼯作时间(我们的⼯作时间 09:00-17:30 午休时间12:00-13:00 午休时间不属于⼯作范围,需要剔除)
当看到这个需求的时候,就感觉让实现⾊彩斑斓的⿊⼀样,整个⼈是没有思绪的
但是最后发现还是可以完成的
⽐如现有的数据:
原生家庭这个表的字段意思:请求ID,操作时间,验收时间
实现这个功能需要两个表辅助:
qq密保问题第⼀个表:TB_IP_Times(该表就是存放每⼀天的⽇期)
第⼆个表:TB_IP_OAHrmPubHoliday(国家法定节假⽇表)chagetype=1 的⽇期就是补班
changetype=2 的⽇期是正常假⽇
第⼀步:⽤⽇期表关联我们需要求的表,关联条件就是全部关联,然后筛选⽇期在我们的操作时间和结束时间范围内的⽇期,这⾥需要拼接⼀个当天的结束时间,还有开始时间和结束时间,后⾯有⽤
衡水高考成绩startDay:这段时间的开始时间(这⾥截取的是操作时间年⽉⽇作为开始时间)
endDay:这段时间的结束时间(这⾥截取的是验收时间年⽉⽇作为结束时间)
望洞庭课件NowDay:就是这段时间的每⼀天,包括开始时间和结束时间
NowStartDay:就是NowDay拼接了每天的⼯作开始时间
NowEndDay:就是NowDay拼接了每天⼯作的结束时间
第⼆步:
这⼀步是为了判断这⼀天是否是开始时间,是否是结束时间,是否是周六⽇如果⾮开始时间,⾮结束时间,那么我们的⼯作⽇期是7.5h
如果是开始时间,结束时间就需要更复杂的判断
创业板怎么开通isStartDay:1为是开始时间,0为不是
isEndDay:1为是结束时间,0为不是
isWeek:1为是周末,0为不是
在节假⽇表中筛选补班的时间,因为如果周六⽇是补班的话,则周六⽇不剔除
元宵祝福短信第四步:
⽤第⼆步的视图,根据NowDay这个字段和补班的HolidayDate这个⽇期关联,如果可以关联上,则这⼀天的周六⽇是补班的,则修改
isWeek这个字段状态=0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论