SqlServer 查询星期数所在日期范围的日期值
Posted 海百合王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer 查询星期数所在日期范围的日期值相关的知识,希望对你有一定的参考价值。
一次功能处理时,发现还没用过当只有星期数的时候去确定在某段日期内的具体日期的,平常都是根据日期去找星期数,反过来的引起了我的兴趣,研究了一下,还是参考了博客的一位博主的解决方案,删减了下,
比如:当你想知道在2021-11-11 到2021-11-23日之间星期一是哪天,或者有多少个星期二,这个时候就来学习学习吧:
CREATE FUNCTION [dbo].[My_OneWeek_GetDate](@KSRQ DATETIME,@JSRQ DATETIME,@XQ int) RETURNS @tmpTable TABLE(resultDay DATETIME) AS BEGIN DECLARE @KSRQ_1 DATETIME SET @KSRQ_1 = CONVERT(DATETIME,@KSRQ) DECLARE @KSRQ_2 DATETIME SET @KSRQ_2 = DATEADD(DAY,@XQ - DATEPART(WEEKDAY,@KSRQ_1),@KSRQ_1) DECLARE @JSRQ_1 DATETIME SET @JSRQ_1 = CONVERT(DATETIME,@JSRQ) DECLARE @JSRQ_2 DATETIME SET @JSRQ_2 = DATEADD(DAY,@XQ - DATEPART(WEEKDAY,@JSRQ_1),@JSRQ_1) IF(@KSRQ_1 > @JSRQ_1) BEGIN RETURN END WHILE(@KSRQ_2 <= @JSRQ_2) BEGIN SET @KSRQ_2 = DATEADD(DAY,7,@KSRQ_2) if(@KSRQ_2>@KSRQ_1 and @KSRQ_2<@JSRQ_1) begin insert into @tmpTable values(@KSRQ_2) end END return End go
这里运用的方法,以便其他语句调用,值得注意的是,方法内不能使用执行语句,update/insert/delete/会提示错误,至于为什么把
SET DATEFIRST 1 也注释掉,你可以亲自试试,建议这个要写到方法外部,那么,
调用
select * from [dbo].[My_OneWeek_GetDate](\'2021-11-20\',\'2021-11-24\',1)
传入开始日期,结束日期,以及星期数(星期三就是3,周二就是2了什么的)
然后就会看到它的结果:
ok,
就这样了,有交流请联系wx:EnternityOfStart
哦还有感谢:
https://www.cnblogs.com/ltcsys/p/12972188.html
以上是关于SqlServer 查询星期数所在日期范围的日期值的主要内容,如果未能解决你的问题,请参考以下文章