Není potřeba mít vypočítaný sloupec pro „vyhledávání tabulky“ pro řádky, které odpovídají jednomu roku. Napište si klauzuli where s použitím intervalu a mějte index ve sloupci data.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Pokud chcete jako argument v dotazu použít místo dvou řetězců int (rok), můžete použít dateadd
. Jen se ujistěte, že na sloupec ActivityDate neaplikujete žádné funkce/manipulace, protože SQL Server nebude moci index použít.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)