Относится к вашему существующему запросу, конечно, вам нужно И, а не ИЛИ, чтобы гарантировать отсутствие будущих дат? Скажем, это июль 2020 года, а у вас дата января 2021 года, которая в будущем. Если вы скажете MONTH('jan-2021') < MONTH('jul-2020') OR YEAR('jan-2021') < YEAR('jul-2020')
, тогда это будет правдой, потому что январь раньше, чем июль, поэтому будет возвращена будущая дата января 2021 года
Не совсем уверен, почему вы не просто WHERE transdate < CURRENT_DATE()
, если только в этот день Месяц также классифицируется как будущая дата ... (требуя, чтобы месяц и год были меньше текущей даты, если это 13 июля 2020 г., вы получите записи только до конца июня 2020 г., если учитывать месяц и только год)
Но чтобы включить все даты прошлого и будущего, просто полностью удалите предложение WHERE
Изменить в ответ на комментарий:
Если вы хотите запросить это дает "все данные до 01 июля 2005 года, но не включая его", затем выполните:
WHERE transdate < ?
И в своем интерфейсе укажите параметр типа даты 01-Jul-2005. Можно указать любую дату, но для того, чтобы обрезать ее в конце определенного месяца, укажите дату, которая является первым днем некоторого месяца
Вы можете повторно использовать тот же запрос и для будущих дат, указав дату, превышающую любую возможная дата в таблице, например 01-Янв-3000