自定义星期几做为划分依据批量生成每个月的周信息(二):自定义设置周信息计算标准

上一篇 [ 自定义星期几做为划分依据批量生成每个月的周信息(一) ] 说到如何设定并生成了日历基础数据表,根据基础表,我们可以根据自定义要求,设定周期的归属。例如以周一做为参考标准,周一在哪个月,当周属于哪一个月。
主要用到sqlServer的 [ROW_NUMBER()] 这个排名函数。

--根据设定的标准批量生成月份周信息
declare @setDayWeekValue smallint
set @setDayWeekValue=1 --跨月(年)的时候设定星期几所在归属月(月)作为划分依据
select  yearValue as '所属年份',monthValue as '所属月份',
ROW_NUMBER() OVER(PARTITION BY YearValue,MonthValue ORDER BY DateValue) as '所属周' ,
convert(varchar(10),DATEADD(day,1-@setDayWeekValue,DateValue),25) as '起始日期',
convert(varchar(10),DATEADD(day,7-@setDayWeekValue,DateValue),25) as '结束日期'
from ComCalendarInfo  where  DayWeekValue=@setDayWeekValue
以星期一做为划分依据,可以看到当出现跨月周的时候,因为当周的周一(1月29日)是在1月份,所以当周就归属到了1月份的第5周。

按周一做为划分依据

如果以当周的周五(2月2日)做为划分依据的话,那结果就是当周归属到2月份的第一周。

按周五做为划分依据

猜你喜欢

转载自blog.csdn.net/ronghua189/article/details/79260918
今日推荐