将周日期部分编号转换为星期内的日期(...的一周)

时间:2012-09-13 16:55:24

标签: sql tsql sql-server-2005 week-number datepart

我想弄清楚如何将一周的datepart转换为该周的星期一。

我正在使用它:

     datepart(ww, DateCompleted) as week 

按周对我们系统中的一组订单进行分组。我的目标是这样说而不是37,我希望它返回第37周的星期一,即:09-10-2012。我能够通过定义每个数字的每周来做到这一点,但我宁愿不花太多时间每周打字,因为那里可能有更好的选择,我只是无法在网上找到它而不是MySQL和其他编程语言(我需要T-SQL,或者任何可以在sql server 2005上运行的东西),我不知道如何使用它。感谢任何可以提供帮助的人。我会尽可能经常回来,以便在需要时提供更多信息。

2 个答案:

答案 0 :(得分:3)

您可以合并DATEADDDATEPART以获取所提供日期的星期一:

DATEADD(day, (-1 * DATEPART(dw, datecompleted)) + 2, datecompleted)

示例found here

答案 1 :(得分:2)

当然我发布了一个解决方案,感谢任何看过并试图提供帮助的人。这是我找到的解决方案:

SET DATEFIRST 1
declare @wk int  set @wk = 1
declare @yr int  set @yr = 2007

select dateadd (week, @wk, dateadd (year, @yr-1900, 0)) - 4 -
     datepart(dw, dateadd (week, @wk, dateadd (year, @yr-1900, 0)) - 4) + 1

在此链接中找到:

http://social.msdn.microsoft.com/Forums/en/transactsql/thread/cf233caf-4ccd-4bca-add2-b5eb467f2dd4