SQL如何传入年月查询当月有多少个休息日
发布网友
发布时间:2022-04-10 00:43
我来回答
共2个回答
热心网友
时间:2022-04-10 02:13
--用户输入月份
declare @month varchar(8)='201706'
--定义变量:用于存储日期
declare @day varchar(8)=''
--定义变量:返回 休息日
declare @result int=0
--每月都是从1号开始的 得到20170601
declare @monthStartDay int= cast( @month+'01' as int )
--每月的1号减一天就是上月的最后一天,这里取得20170630
declare @monthEndDay int=cast ( convert(varchar(8),dateadd(d,-1,dateadd(m,1,@month+'01') ),112) as int)
--设置一周的第一天为星期一
set datefirst 1
--判断 这个月的每一天是否是星期六或星期日
while (@monthStartDay<=@monthEndDay)
begin
declare @weekday int =datepart(dw,cast(@monthStartDay as varchar(8)))
if( @weekday =6 or @weekday=7)
--结果+1
set @result=@result+1
set @monthStartDay=@monthStartDay+1
end
select @result
热心网友
时间:2022-04-10 03:31
公式应该没什么问题啊