你如何在SQL中找到去年同一个工作日?

Dav*_*ett 5 sql t-sql sql-server

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

例如,今天是2013年6月20日和周四.我希望看到今天的销量,与去年同一天(2012年6月21日,而不是2012年6月20日,即周三)相同.

如何在T-SQL中完成?

gbn*_*gbn 15

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)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,它是完美且易于阅读的 (2认同)

Dav*_*ett 0

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))
Run Code Online (Sandbox Code Playgroud)

结果是:

2012-06-21 00:00:00.000
Run Code Online (Sandbox Code Playgroud)