Es ist keine berechnete Spalte erforderlich, um eine Tabelle nach Zeilen zu durchsuchen, die mit einem Jahr übereinstimmen. Schreiben Sie Ihre Where-Klausel stattdessen mit einem Intervall und haben Sie einen Index für Ihre Datumsspalte.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Wenn Sie anstelle von zwei Zeichenfolgen ein int (Jahr) als Argument für die Abfrage verwenden möchten, können Sie dateadd
verwenden . Stellen Sie nur sicher, dass Sie keine Funktionen/Manipulationen auf die ActivityDate-Spalte anwenden, da SQL Server sonst den Index nicht verwenden kann.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)