SQL-仅从DateTime字段中选择“年”

SQL-仅从DateTime字段中选择“年”,sql,select,sql-server-2012,Sql,Select,Sql Server 2012,我的数据库是SQL Server 2012。我尝试只从datetime字段中选择年份。日期格式为dd/mm/yyyy 00:00:00。 以下是我的疑问: SELECT ,YEAR(DateTime) FROM MayTable 但当我运行查询时,会出现以下错误: 从字符转换日期和/或时间时转换失败 绳子 您首先应该将此信息存储在相应数据类型的列中 但如果我正确理解你的评论,这不是你自己设计的表格。你可以用 SELECT CAST(SUBSTRING(DateTime, 7,

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

SELECT 
       ,YEAR(DateTime)
FROM MayTable
但当我运行查询时,会出现以下错误:

从字符转换日期和/或时间时转换失败 绳子


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

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

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


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

select datepart(yyyy,ColumnName) from table
有关更多详细信息,请访问

日期时间字段显然不是日期时间字段,而是字符字段。这对事情很重要。首先,您不应该将日期时间存储为文本,而是存储在特定的日期和时间类型中。第二,只要它是一个文本字段,您就必须正确地将其转换为日期,或者只使用SUBSTR从中获取年份。我在数据库中不存储任何内容,该数据库来自SCVMM…@GolezTrol,您能举个例子吗?在这种情况下,您将使用MONTHDateTime。或者DATENAMEMONTH,DateTimeOk,我明白了,我只需要年复一年地改变。非常感谢您的帮助只是为了确保“设置”不会更改my DB中的任何内容?不,它只会影响当前会话中字符串日期的解释方式。
select datepart(yyyy,ColumnName) from table