我正在尝试根据用户输入的周开始日创建自定义周数和范围。
我用SET Datefirst = @Userdefinedvalue
传递了用户定义的日期(使用函数将我的工作日起始值映射到T-SQL)。此外,我还有一个功能可以让我获得当周的最后一天。
最佳方法是什么?
我的目标是:如果我选择星期二作为本周的开始日存储过程,根据我对全年的选择生成我的周数和开始/结束日期
答案 0 :(得分:1)
想法是找到一周的第一天。首先,使用SQL Server内置函数通过减去datepart(wd)
将一周的开始移动到星期日(在美国)。实际上datepart(wd)
返回1到7的值,我们希望它们为0到6。
然后,根据您的星期日期添加一个偏移量。以下是示例代码:
declare @offset int (case when @DateFirst = 'Mon' then 1
when @DateFirst = 'Tue' then 2
...
when @DateFirst = 'Sun' then 0
end);
select dateadd(dd, @offset - (datepart(wd, thedate) - 1)
thedate) as WeekStartDate