SQL Server 统计某个月周末的天数

---注意:这里统计的周末包括周5,周6,但不包括周日
ALTER
FUNCTION [dbo].[GetWeekDaysByMonth] ( @Year INT, @Month INT, @Day INT ) RETURNS INT AS BEGIN DECLARE @date DATETIME = DATEFROMPARTS(@Year, @Month, 28); DECLARE @weekday INT = 0, @weekDays INT = 0, @daysCount INT = 0, @dayDiff INT = 0; SET @daysCount = 32- DAY(DATETIMEFROMPARTS(@Year, @Month, @Day, 1, 1, 1, 1)- DAY(DATETIMEFROMPARTS(@Year, @Month, @Day, 1, 1, 1, 1)) + 32); --月天数 SET @dayDiff = @daysCount - 28; IF @@DATEFIRST = 7 BEGIN SET @weekday = 7 - (8 - DATEPART(WEEKDAY, @date)) % 7;---周几 END; ELSE BEGIN SET @weekday = DATEPART(WEEKDAY, @date);---周几 END; WHILE @dayDiff > 0 BEGIN IF (@weekday + @dayDiff = 5 OR @weekday + @dayDiff = 6)--判断是否周五,周六 (如果是判断周六周日的天数,条件改为6和7) SET @weekDays = @weekDays + 1; SET @dayDiff = @dayDiff - 1; END; --SELECT dbo.GetWeekDaysByMonth56(2018,11,25) --SELECT dbo.GetWeekDaysByMonth56(2018,11,26) RETURN @weekDays+8;---每个月28天里的周末有8天 END;

猜你喜欢

转载自www.cnblogs.com/lonelyxmas/p/9972836.html