SQL select * from column donde año = 2010

Esta es probablemente una cláusula where simple, pero quiero decir, desde columnX (que es datetime) quiero todas las filas donde solo el año = 2010.

asi que:

select * from mytable where Columnx = 

 select * from mytable where year(Columnx) = 2010 

En cuanto al uso del índice (respondiendo el comentario de Simon):

si tiene un índice en Columnx, SQLServer NO lo usará si usa la function "año" (o cualquier otra function).

Hay dos posibles soluciones para esto, una está haciendo la búsqueda por intervalo como Columnx> = '01012010' y Columnx <= '31122010' y otra es crear una columna calculada con la expresión del año (Columnx), indexarla, y luego haz el filter en esta nueva columna

Si entiendo que quieres todas las filas en el año 2010, entonces:

 select * from mytable where Columnx >= '2010-01-01 00:00:00' and Columnx < '2011-01-01 00:00:00' 

T-SQL y otros;

 select * from t where year(Columnx) = 2010 

es simplemente simple

  select * from myTable where year(columnX) = 2010 

NB: si desea que el año se base en alguna date de reference, el código siguiente calcula las dates para la statement between :

 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 está utilizando un valor anual, el year(@referenceDate) intercambio year(@referenceDate) para el valor de su año de reference funcionará

 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)