【问题标题】:convert week datepart number to date within week (week of...)将周日期部分编号转换为周内的日期(...的周)
【发布时间】:2012-09-06 19:57:31
【问题描述】:

我正在尝试弄清楚如何将一周的日期部分转换为该周的星期一。

我正在使用这个:

     datepart(ww, DateCompleted) as week 

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

【问题讨论】:

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


    【解决方案1】:

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

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

    例如found here

    【讨论】:

    • @wondergoat77:没问题,但请注意:使用此方法会使周日成为下周一的一周。 (即过去的星期日 [9/9/2012] 是 2012 年 9 月 10 日这一周)所以如果你希望你的一周是星期一到星期日,这需要修改。
    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2021-11-10
      • 2020-08-12
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多