[MSSQL]求某段时间内某一星期日期的天数

该SQL函数用于计算指定日期范围内特定星期天数,例如计算2011年3月1日至5月31日内所有周日的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* ********************************************** Program ID: FUN_GetDaysOfWeek Purpose : 求某段时间内某一星期日期的天数 Author : Jesse Date : 2011.02.19 ********************************************** */ go Create Function dbo.FUN_GetDaysOfWeek( @DateS smalldatetime,--开始时间 @DateE smalldatetime,--结束 @WeekValue int) --星期的某一天:-周日、-周一...7-周六 Returns nvarchar(100) As Begin declare @sResult nvarchar(100), --结果描述 @nResult int, --结果天数 @nWeekValue int, --起始日期是星期几(1-周日、-周一...7-周六) @nDays int, --时间段内的天数 @nBeforeDays int, --起始日期到第一次相符日期的天数 @sWeekName varchar(20), --所求日期的星期名称 @tmpDate smalldatetime set @WeekValue=@WeekValue % 7 if @WeekValue=0 set @WeekValue=7 --如果起始日期大于终止日期,则对换 if @DateS>@DateE select @tmpDate=@DateE,@DateE=@DateS,@DateS=@tmpDate --取得起始日期的星期数,与设置无关(1-周日、-周一...7-周六) select @nWeekValue=(Datepart(dw,@DateS)+(@@Datefirst %7))%7 if @nWeekValue=0 set @nWeekValue=7 set @sWeekName=DateName(dw,DateAdd(d,@WeekValue-@nWeekValue,@DateS)) if @WeekValue>=@nWeekValue set @nBeforeDays=@WeekValue-@nWeekValue else set @nBeforeDays=7-abs(@WeekValue-@nWeekValue) --取得时间段内的天数 select @nDays=Datediff(d,@DateS,@DateE)+1 if @nDays<@nBeforeDays select @nResult=0 else select @nResult=ceiling((@nDays-@nBeforeDays)/7.0) set @sResult=N'日期区间:'+ convert(varchar(10),@DateS,120)+ N' 到' +convert(varchar(10),@DateE,120) +' 之间' +@sWeekName +N' 共有'+cast(@nResult as varchar(100))+N' 天' Return @sResult end go --测试示例 select dbo.FUN_GetDaysOfWeek('2011-03-01','2011-05-31',1) --运行结果 /* 日期区间:2011-03-01 到2011-05-31 之间Sunday 共有13 天 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值