Подтвердить что ты не робот

SQL select * from column, где year = 2010

Это, вероятно, простой оператор where, но я хочу сказать, что из столбцаX (который является datetime) мне нужны все строки, где только год = 2010.

так:

select * from mytable where Columnx =
4b9b3361

Ответ 1

select * from mytable where year(Columnx) = 2010

Что касается использования индекса (ответ на комментарий Саймона):

если у вас есть указатель на Columnx, SQLServer НЕ будет использовать его, если вы используете функцию "год" (или любую другую функцию).

Существует два возможных решения: один выполняет поиск по интервалу, например Columnx >= '01012010' и Columnx <= '31122010', а другой - для создания расчетного столбца с выражением year (Columnx), index его, а затем сделать фильтр в этом новом столбце

Ответ 2

Если я понимаю, что вам нужны все строки в 2010 году, то:

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

Ответ 3

T-SQL и другие;

select * from t where year(Columnx) = 2010

Ответ 4

простое

  select * from myTable where year(columnX) = 2010

Ответ 5

Примечание. Если вы хотите, чтобы год основывался на какой-либо ссылочной дате, приведенный ниже код вычисляет даты для оператора 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)

Аналогично, если вы используете значение года, замена year(@referenceDate) для вашего значения базового года будет работать

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)