2017-05-05 3 views
1
WHERE(DATEDIFF(MONTH, datecreated, GETDATE()) = +1) 

Was soll das tun?kann jemand bitte diesen SQL-Code erklären?

+0

Wenn der Datumunterschied in Monaten = 1 –

+0

der +1 zu 1 aufgelöst wird, so heißt es WHERE (Ausdruck) = 1. Expanded: wo (Datum erstellt Monat - aktueller Monat) = 1, dann wahr, sonst falsch. – flaZer

+0

Dieser Ausdruck ist nicht Sargble. Es wird nicht möglich sein, eine Indexsuche auf "datecreated" zu verwenden. –

Antwort

2

Dies wird alles im vorherigen Kalendermonat erhalten. Beachten Sie, dass dies unabhängig vom aktuellen Datum speziell der vorherige Kalendermonat ist.

Warum ist das der Fall? datediff() zählt die Anzahl der Grenzen zwischen zwei Datum/Uhrzeit-Werten. In diesem Fall ist die Grenze der Anfang/das Ende eines Monats. Also, wenn heute 2017-05-05 ist, dann hat alles in 2017-04 eine einzige Grenze. Nichts im März, nichts im Mai. Beachten Sie, dass dies am 1. Mai genauso gilt wie am 31. Mai.

Obwohl dies praktisch ist, denke ich, dass der Code zumindest einen Kommentar haben sollte, weil es für einen zufälligen Leser nicht offensichtlich ist, was passiert.

+0

Vielen Dank. –

Verwandte Themen