【问题标题】:how to extract only the year from the date in sql server 2008?如何仅从 sql server 2008 中的日期中提取年份?
【发布时间】:2012-09-08 08:09:57
【问题描述】:

在 sql server 2008 中,如何仅从日期中提取年份。 在数据库中,我有一个日期列,我需要从中提取年份。 有什么功能吗?

【问题讨论】:

标签: sql sql-server-2008 datetime extract


【解决方案1】:

年函数剂量,像这样:

select year(date_column) from table_name

【讨论】:

  • 已经有 6 岁以上的答案这么说(有更多细节)。在回答旧问题时,请确保您的答案提供的答案与现有答案有很大不同或质量更高。
【解决方案2】:

SQL 服务器脚本

declare @iDate datetime
set @iDate=GETDATE()

print year(@iDate) -- for Year

print month(@iDate) -- for Month

print day(@iDate) -- for Day

【讨论】:

    【解决方案3】:

    简单使用

    选择 DATEPART(YEAR, SomeDateColumn)

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

    可以传递其他时间格式化程序而不是像 YEAR 这样的

    • 第二次
    • 毫秒
    • ...等

    【讨论】:

      【解决方案4】:
      year(table_column)
      

      例子:

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

      【讨论】:

        【解决方案5】:
        ---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
        

        【讨论】:

          【解决方案6】:
          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 ....
          

          【讨论】:

          • 这里我不想要当前的日期时间。我已经有一个日期时间列。如何有一个查询来提取它?
          • 这行得通;如何将今年存储在表格的另一列中?最好有单行查询。
          • 您能否解释一下以下错误:将表达式转换为数据类型日期时间的算术溢出错误。
          • 我猜你正在尝试将字符串转换为日期。并且服务器无法将其转换为 datetime 类型,因为它不支持该格式。
          【解决方案7】:

          您可以在sql中使用year()函数来获取指定日期的年份。

          语法:

          YEAR ( date )
          

          欲了解更多信息check here

          【讨论】:

          • 将表达式转换为数据类型日期时间的算术溢出错误。看不懂是什么?这是我得到的错误?
          • 知道了,它被分配为int。
          【解决方案8】:

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

          【讨论】:

            【解决方案9】:
            select year(current_timestamp)
            

            SQLFiddle demo

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-05
              • 2012-11-07
              • 1970-01-01
              • 1970-01-01
              • 2016-08-02
              相关资源
              最近更新 更多