当前位置: 代码迷 >> SQL >> SQLSERVER 得出当前月的工作日天数(没考虑国家法定假日,只排除周六周日)
  详细解决方案

SQLSERVER 得出当前月的工作日天数(没考虑国家法定假日,只排除周六周日)

热度:164   发布时间:2016-05-05 09:50:54.0
SQLSERVER 得出当前月的工作日天数(没有考虑国家法定假日,只排除周六周日)
CREATE FUNCTION [dbo].[getCountOfWorkdaysOfMonth](@year_in VARCHAR(4), @month_in VARCHAR(2)) --year_in 为四位年,month_in为两位月returns NUMERIC --使用函数的前要先写 set datefirst 1 这一句,让一周的第一天为1,即周一ASBEGIN     DECLARE @firstDayOfMonth VARCHAR(10) --该月的第一天 yyyy-MM-dd格式     DECLARE @howManyDaysOfMonth NUMERIC --该月有多少天     DECLARE @dayCusor NUMERIC --循环用的迭代变量     DECLARE @countOfWorkdaysOfMonth NUMERIC --该月的工作日总数,初始化为0     DECLARE @dayOfADay VARCHAR --某天为周几 用来判断某天是否为周末     DECLARE @dateOfADay DATETIME --某天的日期 用来获取某天为周几,初始化为该月第一天的日期     SET @countOfWorkdaysOfMonth = 0     SET @dayCusor = 1     SET @firstDayOfMonth = @year_in + '-' + @month_in + '-' + '01'     SET @dateOfADay = CONVERT(DATETIME,@firstDayOfMonth,121)     SET @howManyDaysOfMonth = CAST(DAY(DATEADD(MONTH, DATEDIFF(MONTH, 0, @dateOfADay) + 1, 0) - 1) AS NUMERIC)     WHILE @dayCusor <= @howManyDaysOfMonth		 BEGIN          SET @dayOfADay = DATEPART(WEEKDAY,@dateOfADay)          IF @dayOfADay <> '6' AND @dayOfADay <> '7'          BEGIN               SET @countOfWorkdaysOfMonth = @countOfWorkdaysOfMonth + 1          END          SET @dateOfADay = @dateOfADay + 1				  SET @dayCusor = @dayCusor + 1		 END     RETURN @countOfWorkdaysOfMonthEND
  相关解决方案