NB: En caso de que desee el año que se basa en una fecha de referencia, el código de abajo calcula las fechas para la between
declaración:
declare @referenceTime datetime = getutcdate()
select *
from myTable
where SomeDate
between dateadd(year, year(@referenceTime) - 1900, '01-01-1900') --1st Jan this year (midnight)
and dateadd(millisecond, -3, dateadd(year, year(@referenceTime) - 1900, '01-01-1901')) --31st Dec end of this year (just before midnight of the new year)
Del mismo modo, si usted está utilizando un valor de año, el intercambio year(@referenceDate)
para su el valor del año de referencia trabajará
declare @referenceYear int = 2010
select *
from myTable
where SomeDate
between dateadd(year,@referenceYear - 1900, '01-01-1900') --1st Jan this year (midnight)
and dateadd(millisecond, -3, dateadd(year,@referenceYear - 1900, '01-01-1901')) --31st Dec end of this year (just before midnight of the new year)
Alguna información adicional: http://stackoverflow.com/questions/7870943/how-efficient-is-the-yeardate-function – Simon