Это довольно неловкий вопрос, но он потратил 2 часа моего времени, поэтому я сдаюсь.
В приведенном ниже запросе второе условие (которое устанавливает верхний предел моего запроса) игнорируется сервером SQL. Он возвращает ВСЕ годы, превышающие 2018, вместо того, чтобы возвращать строки с 2018 по 2021 (при условии, что сегодняшний год - 2020)
Обратите внимание, что я хотел бы СОХРАНИТЬ годы и контролировать это, используя ГОДЫ, а не указывать дату и время. Что я делаю неправильно? почему мой запрос возвращает все строки больше 2018 (верхний предел игнорируется) ???
--THIS QUERY SHOULD RETURN ALL ROWS WITH "STARTDATETIME"
-- WITH YEARS GREATER THAN 2018 (SO BASICALLY 2018-01-01)
-- BUT NOT THE ROWS WITH YEARS GREATER THAN ONE YEAR AHEAD OF TODAY'S DATE
-->STARTDATETIME IS DATETIME
--I'D LIKE TO MANAGE THIS QUERY BY USING YEARS (BECAUSE IT IS A PARAM IN SSRS)
SELECT STARTDATETIME FROM ACTION
WHERE (YEAR(STARTDATETIME)>='2018' --Greater than equal to 2018
AND
(YEAR(STARTDATETIME)<=(DATEADD(year, 1, GETDATE()))) --this condition is mysteriously ignored
-- I kept adding brackets.
) --but up to only one year ahead
ORDER BY STARTDATETIME DESC
Что я пробовал? Все мыслимые (кроме указания фактического времени и даты). Я продолжал добавлять скобки, чтобы решить проблему, но это не помогло