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

SQLSERVER 得出当前月的工作日天数(没有考虑国家法定假日,只排除周六周日)
CREATE FUNCTION [dbo].[getCountOfWorkdaysOfMonth](@year_in VARCHAR(4), @month_in VARCHAR(2)) --year_in 为四位年,month_in为两位月
returns NUMERIC --使用函数的前要先写 set datefirst 1 这一句,让一周的第一天为1,即周一
AS
BEGIN
     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 @countOfWorkdaysOfMonth
END