Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Quão eficiente é a função YEAR(date)?


Não há necessidade de ter uma coluna computada para "pesquisar uma tabela" por linhas que correspondam a um ano. Escreva a cláusula where usando um intervalo e tenha um índice em sua coluna de data.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
      ActivityDate < '20120101'

Se você quiser usar um int (year) como argumento para a consulta em vez de duas strings, você pode usar dateadd . Apenas certifique-se de não aplicar nenhuma função/manipulação à coluna ActivityDate porque o SQL Server não poderá usar o índice se você fizer isso.
declare @Year int = 2011

select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
      ActivityDate < dateadd(year, @Year-1899, 0)