将varchar值'Oct'转换为数据类型int时转换失败

问题描述 投票:2回答:1
SELECT *
FROM MyTable 
WHERE SUBSTRING(CAST(Date_of_contract AS varchar(38)), 1, 4) = 2017

但我得到的只是这个错误:

将varchar值'Oct'转换为数据类型int时转换失败。

Date_of_contract列的数据类型是datetime

sql sql-server
1个回答
3
投票

不要将日期时间转换为字符串并尝试提取年份。

只是用

SELECT *
FROM MyTable 
where YEAR(Date_of_contract) = 2017

要么

SELECT *
FROM MyTable 
where Date_of_contract >= '20170101' AND Date_of_contract < '20180101' 

如果列上有索引,则第二个是优选的,因为第一个不是可搜索的。

© www.soinside.com 2019 - 2024. All rights reserved.