Может кто-нибудь, пожалуйста, объясните этот код SQL?
WHERE(DATEDIFF(MONTH, datecreated, GETDATE()) = +1)
Что это должно сделать?
1 ответ
Решение
Это получает все в предыдущем календарном месяце. Обратите внимание, что это конкретно предыдущий календарный месяц, независимо от текущей даты.
Почему это так? datediff()
подсчитывает количество границ между двумя значениями даты / времени. В этом случае границей является начало / конец месяца. Итак, если сегодня 2017-05-05, то все в 2017-04 году имеет одну границу. Ничего в марте не делает, ничего в мае не делает. Обратите внимание, что это верно как 1 мая, так и 31 мая.
Хотя это удобно, я думаю, что код должен по крайней мере иметь комментарий, потому что для обычного читателя может быть не очевидно, что происходит.