【问题标题】:SQL - Select only 'Year' from DateTime fieldSQL - 从日期时间字段中仅选择“年份”
【发布时间】:2015-12-31 16:04:34
【问题描述】:

我的数据库是 SQL Server 2012。我尝试从我的日期时间字段中仅选择年份。日期格式为 dd/mm/yyyy 00:00:00。 这是我的疑问:

SELECT 
       ,YEAR(DateTime)
FROM MayTable

但是当我运行我的查询时,我得到了这个错误:

从字符转换日期和/或时间时转换失败 字符串。

【问题讨论】:

  • 您的日期时间字段显然不是日期时间字段,而是字符字段。这意味着事情。首先,您不应将日期时间存储为文本,而应存储为此目的可用的特定日期和时间类型。其次,只要它是一个文本字段,您要么必须将其正确转换为日期,要么只使用 SUBSTR 从中获取年份。
  • 我的数据库中没有存储任何内容,数据库来自 SCVMM...
  • @GolezTrol,你能举个例子吗?

标签: sql select sql-server-2012


【解决方案1】:

另一个从 DateTime 数据类型中选择年份的过程是

select datepart(yyyy,ColumnName) from table

欲了解更多详情,请访问此 link

【讨论】:

    【解决方案2】:

    您应该首先将此信息存储在适当数据类型的列中。

    但是,如果我正确理解您的评论,这不是您自己设计的表格。你可以使用

    SELECT CAST(SUBSTRING(DateTime, 7, 4) AS INT)
    FROM   MyTable; 
    

    或者

    SET DATEFORMAT DMY;
    
    SELECT YEAR(DateTime)
    FROM   MyTable; 
    

    【讨论】:

    • 在这种情况下你会使用MONTH(DateTime)。或DATENAME(MONTH,DateTime)
    • 好的,我知道我只需要将年份更改为月份。非常感谢您的帮助
    • 只是为了确定,“设置”不会更改我的数据库中的任何内容?
    • 不,它只会影响当前会话中字符串日期的解释方式。
    猜你喜欢
    • 2020-11-29
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多