【问题标题】:How do you find the same weekday last year in SQL?如何在 SQL 中找到去年的同一个工作日?
【发布时间】:2013-06-17 09:49:15
【问题描述】:

通常在销售报告等中,您需要将这一天与去年的同一天进行比较,但基于相同的“工作日”,而不是“月中的某天”。

例如,今天是 2013 年 6 月 20 日和星期四。我想查看今天的销售额,而不是去年的同一个星期四(2012 年 6 月 21 日,而不是 2012 年 6 月 20 日的星期三)。

如何在 T-SQL 中做到这一点?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:
    DECLARE @now DateTime
    SET @now = '2013-06-20' -- you could say GETDATE()
    SELECT DATEADD(day, (DATEPART(week, @now) * 7 + DATEPART(weekday, @now)) - (DATEPART(week, DATEADD(year, -1, @now)) * 7 + DATEPART(weekday, DATEADD(year, -1, @now))), DATEADD(year, -1, @now))
    

    结果是:

    2012-06-21 00:00:00.000
    

    【讨论】:

      【解决方案2】:
      DECLARE @now Date
      SET @now = '2013-06-20' -- your example
      SELECT DATEADD(week, -52, @now)
      
      SET @now = '2012-06-21' -- leap year test
      SELECT DATEADD(week, -52, @now)
      

      【讨论】:

      • 这应该是公认的答案,完美且易于阅读
      【解决方案3】:

      dateadd('day',-364,@now) 希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        相关资源
        最近更新 更多