Нет необходимости иметь вычисляемый столбец для «поиска в таблице» строк, соответствующих одному году. Напишите вам предложение 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)