Инструкция SQL для фильтрации по последним 5 годам

#sql-server #tsql

Вопрос:

В настоящее время я работаю над инструкцией SQL, которая фильтрует данные за последние 5 лет, я добавил приведенное ниже предложение where, которое займет у меня ровно 5 лет с сегодняшнего дня.

Я хотел спросить, как бы я улучшил это заявление, чтобы оно также содержало все данные за 5-й год.

например, данные были бы не с даты 16/11/2016, а с 01/01/2016, если бы они были запущены сегодня.

Где заявление:

 WHERE CreatedDate gt; DATEADD(YEAR,-5,GETDATE())  

Ответ №1:

DATEFROMPARTS это твой друг:

 WHERE CreatedDate gt;= DATEFROMPARTS(YEAR(GETDATE())-5,1,1)  

Ответ №2:

Вы могли бы использовать

 DATEFROMPARTS(YEAR(GETDATE()) - 5, 1, 1)  

Ответ №3:

вероятно, у вас есть year функция, которую вы можете напрямую использовать :

 where year(CreatedDate) gt;= year(GETDATE()) - 5  

Комментарии:

1. Обратите внимание, что это невозможно сделать, поэтому любые индексы в столбце CreatedDate не смогут быть использованы.