В sql server 2008, как извлечь только год с даты. В БД У меня есть столбец для даты, из которого мне нужно извлечь год. Есть ли какая-нибудь функция для этого?Как извлечь только год с даты в SQL Server 2008?
ответ
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 ....
select year(current_timestamp)
DATEPART (гггг, date_column) может быть использована для извлечения года. В общем случае функция DATEPART используется для извлечения определенных частей значения даты.
Вы можете использовать функцию year()
в sql, чтобы получить год с указанной даты.
Синтаксис:
YEAR (date)
Для получения дополнительной информации check here
Ошибка арифметического переполнения, преобразующая выражение в тип данных datetime. Не могу понять, что это? Это ошибка, которую я получил? – Praveen
Какой формат вы использовали для хранения дат в таблице.? – heretolearn
получил его, он был назначен как int. – Praveen
---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
year(table_column)
Пример:
select * from mytable where year(transaction_day)='2013'
Просто используйте
SELECT DATEPART (YEAR, SomeDateColumn)
Он вернет часть типа DATETIME, которая соответствует указанному параметру. SO DATEPART (YEAR, GETDATE()) вернет текущий год.
Может пройти другие временные форматтеры вместо YEAR как
- ДЕНЬ
- МЕСЯЦ
- ВТОРОЙ
- миллисекунду
- ... и т.д..
SQL Server Script
declare @iDate datetime
set @iDate=GETDATE()
print year(@iDate) -- for Year
print month(@iDate) -- for Month
print day(@iDate) -- for Day
возможно дубликат [показывает только год часть даты] (http://stackoverflow.com/questions/6628942/showing-only-the-year-portion -of-a-date) – Ben