SELECT *
FROM MyTable
WHERE SUBSTRING(CAST(Date_of_contract AS varchar(38)), 1, 4) = 2017
但我得到的只是这个错误:
将varchar值'Oct'转换为数据类型int时转换失败。
Date_of_contract
列的数据类型是datetime
不要将日期时间转换为字符串并尝试提取年份。
只是用
SELECT *
FROM MyTable
where YEAR(Date_of_contract) = 2017
要么
SELECT *
FROM MyTable
where Date_of_contract >= '20170101' AND Date_of_contract < '20180101'
如果列上有索引,则第二个是优选的,因为第一个不是可搜索的。