【问题标题】:sql custom generated week rangessql自定义生成的周范围
【发布时间】:2013-03-21 02:36:13
【问题描述】:

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

我正在使用SET Datefirst = @Userdefinedvalue 传递用户定义的日期(使用函数将我的工作日开始值映射到 T-SQL)。我还有一个函数可以让我知道本周的最后一天。

最好的方法是什么?

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

【问题讨论】:

  • Welcome to StackOverflow! 这是一个由社区主持的问答网站,所以我冒昧地稍微改进了您帖子的格式。我希望你不介意 =) 编码愉快!
  • 您是在寻找查询结果还是要更新表格?
  • 全年查询结果。

标签: sql stored-procedures dayofweek week-number


【解决方案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

【讨论】:

  • 谢谢,我去看看
  • 效果很好。我正在使用:'Select @DateToUse = DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)' 作为一年中的第一天 - 您示例中的日期字段。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2010-12-03
  • 2018-01-10
相关资源
最近更新 更多