zoukankan      html  css  js  c++  java
  • mssql sqlserver 获取指定日期为本月第几个工作日

    转自:http://www.maomao365.com/?p=6771

    摘要:
    下文讲述工作中,需要获取指定日期在当月的工作日


    下文讲述常规的指定工作日所在月的天数分析,
    实现思路:
    1 生成一个国家法定假日表(A),非星期六,星期天
    2 生成一个国家法定补办表(B),涉及星期六星期天调班
    3 生成指定月份的日期流水表(C)
    4 获取指定日期的工作日信息,如下所示:

    --例: 获取 2018-4-10 为2018年4月的第几个工作日
    declare @d datetime
    set @d ='2018-4-10' --可通过下面的方法计算出 为本月第6个工作日
    
    ---1:获取4月指定日期的所在月工作日数
    create table A(A datetime)
    create table B(B datetime)
    ----4.5.4.6 4.7 4.30为法定假日
    insert into A (A)values('2018-4-5'),
    ('2018-4-6'),('2018-4-7'),('2018-4-30')
    ----补班日 4月8 4月28 4月30 日
    insert into B (B)values('2018-4-8'),
    ('2018-4-28'),('2018-4-30')
    
    ---生成指定月份(4月)所有天数流水
    set datefirst 1 --设置星期一为第一个工作日
    
    select * from 
    (
    
    select row_number() over(order by d asc ) as [本月第*个工作日],d,datepart(w,d) as [weekInfo] from (
    select dateadd(day,number,'2018-4-1') as d from master..spt_values 
    where type='p' 
    and number >=0 
    and dateadd(day,number,'2018-4-1') between '2018-4-1' and dateadd(day,-1,'2018-5-1')
    ) as a 
    where a.d not in (select A from A)
    and (a.d in (select b from B ) 
    or datepart(w,a.d) not in (6,7) 
    )
    ) as extend 
    where d =@d 
    
    go
    drop table A 
    drop table B

  • 相关阅读:
    客户机(单线程 和多线程都可以用 主要是看服务器是单线程的还是多线程的)
    获得URl信息
    获取地址
    定时器的使用以及日期的学习
    生产者和消费者
    线程join
    线程的协作
    文件的解压与压缩
    文件的分割与合并
    以各种方式读写文件
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/9286104.html
Copyright © 2011-2022 走看看