Не е необходимо да имате изчислена колона за „търсене в таблица“ за редове, които съответстват на една година. Напишете клаузата where, като използвате интервал вместо това и имайте индекс в колоната с дата.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Ако искате да използвате int (година) като аргумент на заявката вместо два низа, можете да използвате dateadd
. Просто се уверете, че не прилагате никакви функции/манипулации към колоната ActivityDate, защото SQL Server няма да може да използва индекса, ако го направите.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)