2012-09-15 1 views
47

В sql server 2008, как извлечь только год с даты. В БД У меня есть столбец для даты, из которого мне нужно извлечь год. Есть ли какая-нибудь функция для этого?Как извлечь только год с даты в SQL Server 2008?

+0

возможно дубликат [показывает только год часть даты] (http://stackoverflow.com/questions/6628942/showing-only-the-year-portion -of-a-date) – Ben

ответ

77
year(@date) 
year(getdate()) 
year('20120101') 

update table 
set column = year(date_column) 
whre .... 

или, если вам это нужно в другой таблице

update t 
    set column = year(t1.date_column) 
    from table_source t1 
    join table_target t on (join condition) 
    where .... 
+0

Здесь я не хочу, чтобы текущее время и время. У меня уже есть столбец для datetime. Как получить запрос, чтобы извлечь это? – Praveen

+1

выберите год (дата_колонка) из .... –

+0

Это работает; как я могу сохранить этот год в другом столбце таблицы? Лучше иметь однострочный запрос. – Praveen

0

DATEPART (гггг, date_column) может быть использована для извлечения года. В общем случае функция DATEPART используется для извлечения определенных частей значения даты.

9

Вы можете использовать функцию year() в sql, чтобы получить год с указанной даты.

Синтаксис:

YEAR (date) 

Для получения дополнительной информации check here

+0

Ошибка арифметического переполнения, преобразующая выражение в тип данных datetime. Не могу понять, что это? Это ошибка, которую я получил? – Praveen

+0

Какой формат вы использовали для хранения дат в таблице.? – heretolearn

+0

получил его, он был назначен как int. – Praveen

0
---Lalmuni Demos--- 
create table Users 
(
userid int,date_of_birth date 
) 
insert into Users values(4,'9/10/1991') 

select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years, 
MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months, 
DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days, 
from users 
3
year(table_column) 

Пример:

select * from mytable where year(transaction_day)='2013' 
0

Просто используйте

SELECT DATEPART (YEAR, SomeDateColumn)

Он вернет часть типа DATETIME, которая соответствует указанному параметру. SO DATEPART (YEAR, GETDATE()) вернет текущий год.

Может пройти другие временные форматтеры вместо YEAR как

  • ДЕНЬ
  • МЕСЯЦ
  • ВТОРОЙ
  • миллисекунду
  • ... и т.д..
2

SQL Server Script

declare @iDate datetime 
set @iDate=GETDATE() 

print year(@iDate) -- for Year 

print month(@iDate) -- for Month 

print day(@iDate) -- for Day 

 Смежные вопросы

  • Нет связанных вопросов^_^