根据开始和结束时间计算工作日,排除指定节假日和双休日

1.建立一个数据库表结构(HOLIDAY)保存设定好的节假日,包括三个字段ID,DATE,DESCRIPTION

2.建立存储过程dateArithmetic:

--计算节假日
alter function dateArithmetic( 
	@stratDate   datetime, --开始时间
	@endDate   datetime --结束时间
)
returns int 
as 
begin 
	DECLARE @jqday varchar(20)
	DECLARE @days int
	DECLARE @weekday varchar(20)
	
	--获取总天数
	set @days=DATEDIFF(day,@stratDate,@endDate)  
	--set language N'Simplified Chinese'
	--select @jqday=count(SH00) from HOLIDAY where sh01 between @stratDate and @endDate
	select @jqday=count(SH00) from HOLIDAY where sh01 >= @stratDate and sh01<=@endDate
	while @stratDate<=@endDate
	begin
		
		--设为简体中文
		
		select @weekday=datename(weekday,@stratDate)
		
		if @weekday='星期六' or @weekday='星期日'
			set @jqday=@jqday+1

		set @stratDate=dateadd(day,1,@stratDate)
	end
	
	set @days=@days-@jqday
	--print @weekday
	return(@days)
end


 

3.调取存储过程:select dbo.dateArithmetic(开始时间,结束时间)

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值