博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mssql sqlserver 获取指定日期为本月第几个工作日
阅读量:4457 次
发布时间:2019-06-08

本文共 1053 字,大约阅读时间需要 3 分钟。

摘要:

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


下文讲述常规的指定工作日所在月的天数分析,

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

--例: 获取 2018-4-10 为2018年4月的第几个工作日declare @d datetimeset @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 godrop table A drop table B

转载于:https://www.cnblogs.com/lairui1232000/p/9286104.html

你可能感兴趣的文章
小Z爱划水
查看>>
Qt Font
查看>>
2014年生日
查看>>
扫描目录下的文件并拼接在一起
查看>>
ELK 分布式日志处理 10.12
查看>>
Java虚拟机详解05----垃圾收集器及GC参数
查看>>
7. 单位,移动布局
查看>>
inux中bin与sbin目录的作用及区别介绍
查看>>
USACO 3.1 Contact
查看>>
Office之什么是高内聚低耦合
查看>>
一些奇怪的问题求回答
查看>>
这些年踩过的坑
查看>>
iOS开发拓展篇——如何把项目托管到GitHub
查看>>
性能优化之数据库优化
查看>>
类的继承、菱形继承、派生、多态
查看>>
mysql约束
查看>>
javascript鼠标及键盘事件总结及案例
查看>>
mysql表之间的关系及级联操作
查看>>
mac 搭建virtualenv的那些坑
查看>>
多路复用IO模型
查看>>