2013-06-20 8 views
5

Oft in Verkaufsreports und so weiter, müssen Sie diesen Tag mit demselben Tag des letzten Jahres vergleichen, aber basierend auf demselben "Wochentag", nicht "Tag des Monats".Wie finden Sie den gleichen Wochentag letztes Jahr in SQL?

So ist zum Beispiel heute der 20. Juni 2013 und ein Donnerstag. Ich möchte Verkäufe für heute sehen, im Vergleich zum gleichen DONNERSTAG im letzten Jahr (21. Juni 2012, im Gegensatz zum 20. Juni 2012, der ein Mittwoch war).

Wie kann dies in T-SQL getan werden?

Antwort

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)) 

Das Ergebnis ist:

2012-06-21 00:00:00.000 
12
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) 
+1

helfen Dies sollte die akzeptierte Antwort sein, es ist perfekt und leicht zu lesen –

-1

dateadd ('Tag', - 364, @ jetzt) ​​ Hoffnung das Sie

Verwandte Themen