最近在做请假单,请假时长需要去掉法定假日和公休假,法定假日我不会算网上也没找到类似的资料

所以我打算创建一个表,自动根据年份条件生成公休假,然后手动编辑添加法定假日。

然后再用它去关联请假数据得出实际请假时长。

下面就是根据年份生成的公休假日期。

DECLARE @Work_LegalHoliday TABLE(ID VARCHAR(36) ,DateTimeName DATETIME ,WeekName VARCHAR(50) ,IsLegalHoliday INT ,Remark NVARCHAR(MAX))DECLARE @Year INTSET @Year = 2015
--
;
WITH    tbSourceAS ( SELECT   CAST(RTRIM(@Year) + '-01-01' AS DATETIME) DateTimeNameUNION ALLSELECT   DATEADD(dd, 1, DateTimeName)FROM     tbSourceWHERE    DATEPART(yy, DATEADD(dd, 1, DateTimeName)) = @Year)INSERT  @Work_LegalHolidaySELECT  NEWID() ,CONVERT(VARCHAR(10), DateTimeName, 121) ,DATENAME(WEEKDAY, DateTimeName) ,0 ,--不是法定假日'' AS RemarkFROM    tbSource aWHERE   DATEPART(WEEKDAY, a.DateTimeName) = 1OR DATEPART(WEEKDAY, a.DateTimeName) = 7EXCEPTSELECT  NEWID() ,CONVERT(VARCHAR(10), DateTimeName, 121) ,DATENAME(WEEKDAY, DateTimeName) ,0 ,'' AS RemarkFROM    @Work_LegalHolidayOPTION  ( MAXRECURSION 0 )
SELECT  *
FROM    @Work_LegalHoliday

生成结果如下:

生成这个结果后,再去编辑或添加法定假日。

然后再用请假数据关联该表

SELECT   a.ID ,a.LeaveStartTime ,a.LeaveEndTime ,b.IsLegalHoliday ,CASE WHEN b.WeekName = '星期六'OR b.WeekName = '星期日' THEN '是'ELSE '否'END IsWeekendFROM     dbo.Work_Leave aLEFT JOIN dbo.Work_LegalHoliday b ON b.DateTimeName >= a.LeaveStartTimeAND b.DateTimeName <= a.LeaveEndTime

这是每条记录关联出来的请假时段中包含公休假和法定假的详细记录,然后根据条件进行统计就是了。




sql 计算法定假节假日解决方案一相关推荐

  1. sql计算留存_SQL无所不能:DBA宝妈宝爸系列分享

    原文链接:https://www.modb.pro/db/22315 目前程序从功能上其实已经完全满足客户(当然我这里的客户都是指媳妇儿)需求,具体可参考: 使用SQL计算宝宝每次吃奶的时间间隔 - ...

  2. SQL ——利用窗口函数的T-SQL解决方案

    目录 1.数字辅助表 2.日期和时间值序列 3.序列键--更新列中的值为唯一值 4.分页 5.删除重复 6.数据透视 7.每组前N行 8.模式 9.统计总和 10.最大并发间隔 11.包装间隔 12. ...

  3. oracle 求一年多少天,SQL 计算一年有多少天

    SQL 计算一年有多少天,计算当前年份有多少天. SQL 计算一年有多少天 问题描述 计算当前年份有多少天. SQL 计算一年有多少天 解决方案 计算当前年份有多少天,等同于计算下一年的第一天和当前年 ...

  4. mysql语句报错1403_GoldenGate SQL error 1403 mapping 错误解决方案

    GoldenGate SQL error 1403 mapping 错误解决方案 故障现象: 2011-09-06 15:45:29 WARNING OGG-01004 Oracle GoldenGa ...

  5. 分布式实时计算—实时计算相关问题及解决方案

    原文作者:孟知之 原文地址:实时计算相关问题及解决方案 目录 1. 怎么处理 Spark structured streaming 慢速变化数据 join 的问题? 2. Kafka不稳定导致Spar ...

  6. SQL计算宝宝吃奶的时间间隔(二)

    导读:之前,在"数据和云"公众号发表过一篇文章<如何使用SQL计算宝宝每次吃奶的时间间隔(分析函数的使用)>,本文为续篇,如何提升程序的易用性. 因为我工作繁忙,时常不 ...

  7. 如何使用SQL计算宝宝每次吃奶的时间间隔(文末含PPT)

    编者的话:搞好SQL可以做很多事情,比如说可以解决海盗分金的问题,可以用SQL把大象装进冰箱,还可以用SQL解决环环相扣的刑侦推理问题,近期,有位读者朋友投稿了"使用SQL计算宝宝每次吃奶的 ...

  8. SQL检索MongoDB的轻量级解决方案

    关于使用SQL访问MongoDB的解决方案,网络上已经可以查到很多.有相当一部分都是比较重的,有的需要安装插件,通过插件界面进行查询交互的,如:DataGrip:有的需要安装分布式计算引擎,并能提供更 ...

  9. 在DB2中,使用sql 计算昨天、最后一天等日期

    在DB2中,使用sql 计算想要的日期值,比如昨天,上月的最后一天,下个月的最后一天等. /* 作者:宾晓辰 微信:BD_BXC MAIL:646501050@QQ.COM PHONE:1802626 ...

最新文章

  1. STM32 TIMER初始化步骤
  2. GridSearchCV与RandomizedSearchCV
  3. 神策数据正式成为国家级信创工委会成员单位!
  4. 异星工厂 自动机器人_插件机机器人能够实现工厂自动化
  5. c++ array赋值问题
  6. SQL Server 存储过程 SET 语句选项
  7. Hive环境搭建(完整版)-配置
  8. 【 HDU - 1215 】七夕节(数论,约数和公式)
  9. arm-linux-gnueabi和arm-linux-gnueabihf 的区别
  10. ceph:如何处理rados --striper上传失败的对象
  11. 基于Snap软件将2A哨兵数据转换为ENVI格式
  12. (3)fastjson带有转义字符的数据格式处理
  13. SpringBoot使用快递鸟进行电子面单的获取以及打印
  14. 二进制转化成ascll_如何将二进制文件转换为ASCII
  15. ICPC2019徐州 Yuuki and a problem 树套树
  16. c++、7-5 估算数学常数e的值
  17. Vue+JTopo(一)
  18. 视频融合技术平台解决方案
  19. 计算机二级打字的速度有要求么,打字速度几个要求和技巧
  20. java poi 边框_java poi 设置边框

热门文章

  1. CSS 3D动态立体图形
  2. Python100道练习题(1-50)
  3. 关于互联网流量劫持分析及可选的解决方案
  4. Java常见面试题(二)
  5. eNSP 路由远程登录
  6. 如何成为Web开发人员—编写第一个Web应用程序
  7. NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
  8. html5页面 学生作品,最完整长页面H5制作教程来啦!
  9. 实验指南:BGP路由汇聚(上)
  10. 基于SSM的校园外卖点餐系统