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 查询星期数所在日期范围的日期值的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 从日期字段中提取星期作为日期范围

sqlserver2005 怎么取每周周一的日期

Java日期查询

sqlserver的日期时间比较

oracle如何根据传入的时间参数,得到这个参数所在周的周一至周五的日期和星期数

oracle如何根据传入的时间参数,得到这个参数所在周的周一至周五的日期和星期数