#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
не смогут быть использованы.