mssql sqlserver 使用sql脚本获取”指定日期”为所在月份的第几周的方法分享


摘要:
下文讲述获取指定日期所属月份的第几周的方法分享,如下所示:
实验环境:sqlserver 2008 R2



实现思路及原理:
1.设定每一周的星期一为一周的第一天
2.指定日期的day部分整除7得到的数
3.1
指定日期同7取余大于指定日期的星期数,则在整除结果上加2
(因为开始第一周和指定所在周分别占据两个周所在的行,所以需加两周)
3.2
指定日期同7取余等于于指定日期的星期数并且指定日期为星期天,则在整除结果上加0
3.3
其它情况都在整除结果上加 1

例:

   ---设置周起始时间为星期一
set DATEFIRST 1  


declare @maomao365 datetime
 set @maomao365 ='2019-2-10'

select
datepart(d,@maomao365)/7 + 
(
case 
 when datepart(d,@maomao365)%7>datepart(weekday,@maomao365)
     then 2
 when (datepart(d,@maomao365)%7 = 0 and datepart(weekday,@maomao365) = 7)
     then 0
 else 1 
end
) as [maomao365月份所在周]