Как я могу получить данные за 30 месяцев назад и ранее? - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь автоматизировать мой код, чтобы он мог извлекать данные только 30 месяцев назад, поскольку это происходит, когда набор данных полностью завершен за год.Так, например, когда наступает 1 июля 2019 года, код должен действовать с 1 января 2017 года, то есть за 30 месяцев до этого.Я думал, что код, который я написал, сделает это, но все еще есть примеры записей 2018 года.Правильно ли я использую эту функцию dateadd?

select *
from table
where month(period_end) <= month(dateadd(month, -30, getdate()))

Это работает нормально, но записи 2018 года все еще отображаются, когда я должен видеть только 2017 год и раньше.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Проблема связана с использованием функции MONTH(), которая возвращает число 1-12, поэтому вы фактически сравниваете номер месяца period_end с номером месяца 30 месяцев назад. Замените ГДЕ на

WHERE period_end <= DATEADD(MONTH, -30, GETDATE())
0 голосов
/ 18 июня 2019

Упростите, месяц вам не нужен ():

where period_end <= dateadd(month, -30, getdate())

dateadd(month, -30, getdate()) возвращает максимальную дату, с которой вы хотите period_end сравнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...