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;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值