菜单

mssql sqlserver 获取钦赐日期为前一个月第多少个工作日

2019年10月4日 - sqlite

----编写sql函数
    create function getShuZi(@tmp nvarchar(800))
    returns nvarchar(800)
    as 
    begin
          while PATINDEX('%[^0-9]%', @tmp) > 0  
           begin  
             set @tmp = STUFF(@tmp, PATINDEX('%[^0-9]%', @tmp), 1, '');  
           end;  
           return @tmp;   
    end
    go
   ----测试sql函数
   SELECT dbo.getShuZi('猫猫小屋maomao365.com-sql教程专用网站')   
   go
   drop function dbo.getShuZi
   go

图片 1

 

下文汇报工作中,须要获得内定日期在前段日子的工作日

摘要:

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

下文首要分享从钦命字符串或列中赢得数字音信,如下所示:
试验遭遇:sql server 两千

摘要:

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

下文汇报常规的钦点工作日所在月的运气深入分析,
贯彻思路:
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

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图