2016-06-01 2 views
-1
>=DateAdd("ww",-9,Date()-Weekday(Date(),0)+1)) 

Ich habe die obige Funktion in einigen SQL-Codierung, die ich geerbt haben, und ich kämpfen, um herauszufinden, was es eigentlich ist die Berechnung kann jemand helfen?SQL Datum - Funktionen

+0

SQL Server 2008 –

+0

Es sieht eher wie eine MS Excel- oder Access-Funktion aus. – gofr1

+0

Ich dachte, das wäre DAX, aber es ist nicht, da DAX keine 'DATEADD'-Funktion hat. Aber T-SQL hat keine 'WEEKDAY'-Funktion, das ist wahrscheinlich einfach nur VBA. Fügen Sie den Kontext hinzu, in dem Sie diesen Code gefunden haben. –

Antwort

1

Betrachten Sie diese SQL mit der Anweisung in Teile dekonstruiert.
Es wurde in SQL-Server 12 getestet und verwendet die Funktion GETDATE() anstelle der Funktion Date().

select 
GETDATE() as today, 
@@DATEFIRST as first_day_of_the_week_number, 
DATEPART(WEEKDAY,GETDATE()) as current_day_number_of_the_week, 
GETDATE()-DATEPART(WEEKDAY,GETDATE()) as previous_saturday, 
GETDATE()-DATEPART(WEEKDAY,GETDATE())+1 as previous_sunday, 
DATEADD("ww",-9,GETDATE()-DATEPART(WEEKDAY,GETDATE())+1) as previous_sunday_9_weeks_back; 

So würde es den Sonntag von 9 Wochen zurück geben.

Beachten Sie, dass es davon ausgeht, dass @@DATEFIRST gleich 7.
Wenn @@DATEFIRST gleich 1 ist, dann würde es den Montag von 9 Wochen wieder zurück.

+2

Das hängt tatsächlich vollständig von dem Wert von ['@@ DATEFIRST'] ab (https://msdn.microsoft.com/library/ms187766). (Aber die 'WeekDay'-Funktion ist ebenfalls mehrdeutig mit einem zweiten Argument von' 0 '.) –

+0

@Jeroen War dieser t-sql-quirck nicht bekannt. Danke für die Einsicht. – LukStorms