如何从SQL Server 2008中的日期中仅提取年份?


Answers:


118
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 ....

在这里,我不需要当前日期时间。我已经有日期时间列。如何进行查询来提取呢?
Praveen 2012年

这有效;我如何将今年存储在表格的另一列中?最好有一个单行查询。
Praveen 2012年

您能否解释以下错误:将表达式转换为数据类型datetime的算术溢出错误。
Praveen

我想您正在尝试将字符串转换为日期。并且服务器无法将其转换为日期时间类型,因为它不支持该格式。
Dumitrescu Bogdan 2012年


12

您可以使用 year()在sql中function从指定日期获取年份。

句法:

YEAR ( date )

欲了解更多信息,请点击这里


将表达式转换为数据类型datetime的算术溢出错误。不能理解是什么?这是我得到的错误吗?
Praveen

知道了,它被分配为int。
Praveen

5
year(table_column)

例:

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

4

SQL Server脚本

declare @iDate datetime
set @iDate=GETDATE()

print year(@iDate) -- for Year

print month(@iDate) -- for Month

print day(@iDate) -- for Day

1

年功能剂量,如下所示:

select year(date_column) from table_name


2
已经有6年以上的答案了(详细信息)。回答旧问题时,请确保您的答案与现有答案提供的是实质上不同或质量更高的答案。
Mark Rotteveel

0

DATEPART(YYYY,date_column)可以用来提取一年。通常,DATEPART函数用于提取日期值的特定部分。


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

0

只需使用

SELECT DATEPART(年份,SomeDateColumn)

它将返回DATETIME类型的与您指定的选项相对应的部分。SO DATEPART(YEAR,GETDATE())将返回当前年份。

可以通过其他时间格式器,而不是YEAR

  • 第二
  • 毫秒
  • ...等等。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.