Может кто-нибудь, пожалуйста, объясните этот код SQL?

WHERE(DATEDIFF(MONTH, datecreated, GETDATE()) = +1)

Что это должно сделать?

1 ответ

Решение

Это получает все в предыдущем календарном месяце. Обратите внимание, что это конкретно предыдущий календарный месяц, независимо от текущей даты.

Почему это так? datediff() подсчитывает количество границ между двумя значениями даты / времени. В этом случае границей является начало / конец месяца. Итак, если сегодня 2017-05-05, то все в 2017-04 году имеет одну границу. Ничего в марте не делает, ничего в мае не делает. Обратите внимание, что это верно как 1 мая, так и 31 мая.

Хотя это удобно, я думаю, что код должен по крайней мере иметь комментарий, потому что для обычного читателя может быть не очевидно, что происходит.

Другие вопросы по тегам