1年に一致する行を「テーブルで検索」するために、計算列を用意する必要はありません。代わりに間隔を使用してwhere句を記述し、日付列にインデックスを付けます。
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
2つの文字列の代わりにint(年)をクエリの引数として使用する場合は、dateadd
を使用できます。 。 SQL Serverはインデックスを使用できないため、ActivityDate列に関数/操作を適用しないように注意してください。
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)