Вернуть все данные за исключением текущего месяца - PullRequest
0 голосов
/ 11 февраля 2020

I w sh для извлечения всех данных, хотя I w sh для исключения текущего месяца.

Используемый мной оператор where равен

and MONTH(MOPEFD) <= MONTH(DATEADD(month, - 1, GETDATE()))) 

Когда Я запускаю его в феврале, я получаю данные только за январь 2020 года, январь 2019 года, январь 2018 года, январь 2017 года.

I sh, чтобы получить данные за январь 2020 года, De c 2019, ноябрь 2018 года. ..... к началу.

В следующем месяце я получу sh, чтобы получить февраль 2020 года, январь 2020 года ..... к началу.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Вы можете использовать удобную функцию даты eomonth() (которая была введена в SQL Server 2012):

where mopefd < dateadd(day, 1, eomonth(getdate(), -1))

eomonth(getdate(), -1) дает вам последний день прошлого месяца , Вы можете просто добавить к этому один день и использовать его как (не включительно) верхний предел для поиска.

Примечание: как прокомментировал HABO, если mopefd не имеет временной части, выражение можно упростить:

where mopefd <= eomonth(getdate(), -1)
0 голосов
/ 11 февраля 2020

Похоже, вы используете SQL Сервер. Если это так, я бы порекомендовал:

where mopefd < datefromparts(year(getdate()), month(getdate()), 1)

Если вас не волнует использование индекса или сокращение разделов, вы также можете использовать:

where datediff(month, mopefd, getdate()) >= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...