Tidak perlu memiliki kolom yang dihitung untuk "mencari tabel" untuk baris yang cocok dengan satu tahun. Tulis Anda di mana klausa menggunakan interval sebagai gantinya dan memiliki indeks di kolom tanggal Anda.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Jika Anda ingin menggunakan int (tahun) sebagai argumen untuk kueri alih-alih dua string, Anda dapat menggunakan dateadd
. Pastikan Anda tidak menerapkan fungsi/manipulasi apa pun ke kolom ActivityDate karena SQL Server tidak akan dapat menggunakan indeks jika Anda melakukannya.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)