sql自定义生成的周范围

时间:2013-03-30 14:06:43

标签: sql stored-procedures dayofweek week-number

我正在尝试根据用户输入的周开始日创建自定义周数和范围。

我用SET Datefirst = @Userdefinedvalue传递了用户定义的日期(使用函数将我的工作日起始值映射到T-SQL)。此外,我还有一个功能可以让我获得当周的最后一天。

最佳方法是什么?

我的目标是:如果我选择星期二作为本周的开始日存储过程,根据我对全年的选择生成我的周数和开始/结束日期

1 个答案:

答案 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