【原创】如何使用一句SQL计算工作日天数?

现在有这样一个需求,要求计算两个日期间的工作日天数,要求除去节假日,其中节假日有一张配置表,具体的格式如下:

开始日期结束日期节假日类型节假日名称
2013-08-10  2013-08-12     法定       端午节
2013-01-012013-01-03     法定     元旦

要求计算两个日期间的天数时要将周末时间去掉,还要将节假日区间的天数排除:

select count(*)
  from (select to_date('2010-01-01', 'yyyy-mm-dd') + LEVEL - 1 as days
          from dual
        CONNECT BY to_date('2010-01-01', 'yyyy-mm-dd') + LEVEL <=
                   to_date('2014-01-01', 'yyyy-mm-dd') + 1)
 WHERE trim(to_char(days, 'D')) IN ('1', '2', '3', '4 ', '5')
   and to_char(days, 'yyyy-mm-dd') not in
       (select to_char(tt, 'yyyy-mm-dd')
          from (select distinct d_begin + LEVEL - 1 as tt
                  from t_pz
                CONNECT BY d_begin + LEVEL <= d_end + 1))

如果有节假日的配置,则在子查询中过滤掉即可。 

转载于:https://www.cnblogs.com/zhangxsh/p/3499032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值