首先,我们有这样一张表

我们要知道两个日期间的工作日天数,相信大家有遇到过这个恶心人的需求,所谓工作日,不简简单单的就是除周六日以外的日子。要考虑到节假日,国庆啊,中秋啊,最让人头疼的是,你根本无法掌控节假日的规律,因为他就是无规律可言。

所以要求出工作日的天数,我们还需要一张假日表,这张表可以帮助我们分清到底那天是节假日,那天是工作日,在末尾我会附上网盘链接,这个表是怎么来的大家应该都清楚,说了无规律,那么只能人工一个个比对了。

基本的需求就是用这两张表关联,求出第一张表的两个日期间的工作日天数即可

我们可以选择这样,一开始我有一个思路,就是求出来日期间的所有天数,然后将此表与假期表关联查询假日有多少天,相减不就正确了,然后我搞了半天才发现,这个好像没办法关联。。所以我们只能用第二种办法。

第二种办法,就是讲第一张表拆分,就例如,将这样的一条数据

拆分为这样

然后再用日期列,去关联假日表的数据,把非工作日的去除,剩下的条数就是工作日的天数。

假日表中:

对应的三天都为工作日,那么最终就是这三条,最后GROUP BY id 列,求出COUNT(*),就是最后的天数,下面上代码。

第一张日期表:[DW].[dbo].[TAB Row Data From ECC temp6]

第二章假日表:[TAB].[dbo].[holiday]

具体字段上边都有对应,请自行更改

SELECTid,[SP PO creation Date],[HUB GI date],COUNT (*) AS COUNT
FROM(SELECTid,[SP PO creation Date],[HUB GI date],DATEADD(DAY,number,[SP PO creation Date]) AS riqiFROM[DW].[dbo].[TAB Row Data From ECC temp6] AS AINNER JOIN master..spt_values AS B ON DATEADD(DAY,number,[SP PO creation Date]) <= [HUB GI date]AND B.[type] = 'P'order by id,riqiAND NOT EXISTS (SELECT1FROM[TAB].[dbo].[holiday] bWHERE[DAY_WORK] = 2AND DATEADD(DAY,number,[SP PO creation Date]) = CONVERT (DATE, [DATE_ID]))) a
GROUP BYid,[SP PO creation Date],[HUB GI date]

最后截图:

接下来大家期待已久的整理出来的假期表:直接上。

链接:https://pan.baidu.com/s/1J9pVGX4xMbsUe69txCGg_Q 
提取码:lhaj

SQL 如何得到两个日期间的工作日(附假期表)相关推荐

  1. oracle计算两个日期间的工作日(根据表配置)

    首先新增表用于配置非工作日,工作日,具体配置在程序中处理 DROP TABLE "T_WEEKDAY"; CREATE TABLE "T_WEEKDAY" (& ...

  2. MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)

    写在前面  参考文章 SQL 如何得到两个日期间的工作日(附假期表)_Fuzz-CSDN博客_sql计算日期之间工作日函数 这篇文章使用的是SQL SEVER ,如何转化为 MYSQL 新手尝试两个小 ...

  3. Python计算两个日期间的工作日(交易日),去除周末节假日

    首先区分一下这里的工作日和节假日是不同的. 工作日是指去掉节假日即周末,但是不去掉调休的日期. 交易日主要针对金融行业,是指去掉节假日和周末,因为周末金融市场也是停盘的,所以即使周末因为调休工作,也不 ...

  4. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

  5. 记录一次计算两个日期间的工作日天数,排除节假日、周末等

    1.数据库存储节假日.补班日期 数据库结构如下,0代表节日,1代表补班日期,需要每年更新 2.代码 (1)计算相差天数 @Overridepublic Long getWorkDay(String s ...

  6. SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)

    CREATE FUNCTION GetWorkDays(@dt_begin DATETIME , --计算的开始日期@dt_end DATETIME --计算的结束日期) RETURNS INT AS ...

  7. 计算两个日期间有多少个工作日

    function TmainForm.WorksDay( //计算两个日期间有多少个工作日 mStartDate: TDate; //开始日期 mEndDate: TDate //终止日期 ): In ...

  8. 列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环)

    oracle中有一个字段rownum,长期以来只知道它是记录的行号,却没有想过用它做更有价值的事情. 有两个时间点,要求列出这两天之间的所有日期,如2010-04-01和2010-04-10,列出 2 ...

  9. 统计两个日期间工作日的天数

    统计两个日期间工作日天数 /*** 将LocalDate转成Date* @param localDate* @return*/public static Date LocalDateToDate(Lo ...

最新文章

  1. Animation 模拟纸盒的爆破
  2. dubbo2.5.6从下载到编译成功并且部署成功过程
  3. perl 远程 mysql_写的一个perl脚本,用于发送远程MySQL命令
  4. boost::process::ipstream相关的测试程序
  5. SVN switch 用法详解
  6. vector的简单实现
  7. poj-1659-Frogs Neighborhood-(图论-是否可图)
  8. Linux-进程管理
  9. python命令行进入帮助模式_Python 命令行之旅:深入 click 之选项篇
  10. 手机“开口”,化身“智能机器人”
  11. PR转场插件 MAC版 FilmImpact Transition Pack v1-v2
  12. 模拟退火算法应用(Java)
  13. Linux云计算虚拟化-KVM桌面虚拟化技术
  14. wep加密方式是什么_什么是WEP(有线等效保密)?
  15. 8月1号起 银行卡、支付宝、微信的这些费用可以省了!
  16. 鏖战2021年618
  17. LC振荡器稳定度与品质因数的关系
  18. outlook自定义快捷键_如何在Outlook中关闭或自定义新的电子邮件警报
  19. 微软快捷键截图_所有最好的Microsoft Word键盘快捷键
  20. 计算机图形学基础第二版,计算机图形学基础(第2版)课后习题答案__陆枫.pdf

热门文章

  1. erlang 单元测试
  2. 八叉树体素遍历近邻体素搜索
  3. 手机版linux软件下载,手机助手linux版下载
  4. Flink实操 : 状态管理
  5. 网络协议-ARP协议与攻击模拟
  6. ESP8266桌面气象站
  7. CSS学习笔记(九)display: inline-block,CSS 布局- 水平和垂直对齐
  8. 361度与国棉联盟达成战略合作;开利宣布收购空调企业广东积微集团;大陆集团与地平线成立智能驾驶合资公司 | 美通企业周刊...
  9. linux cp命令的-f 参数
  10. 《深入浅出WPF》——XAML语法及基础知识