sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué tan eficiente es la función AÑO (fecha)?

No es necesario tener una columna calculada para "buscar en una tabla" filas que coincidan con un año. Escriba su cláusula where usando un intervalo en su lugar y tenga un índice en su columna de fecha.

select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
      ActivityDate < '20120101'

Si desea usar un int (año) como argumento para la consulta en lugar de dos cadenas, puede usar dateadd . Solo asegúrese de no aplicar ninguna función/manipulación a la columna ActivityDate porque SQL Server no podrá usar el índice si lo hace.

declare @Year int = 2011

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