Sql server 从字符串转换日期和/或时间时转换失败
我写了一个程序,实际上是搜索记录。 当我执行它时,它会给出一个错误,上面写着: 从字符串转换日期和/或时间时,转换失败 声明:Sql server 从字符串转换日期和/或时间时转换失败,sql-server,stored-procedures,Sql Server,Stored Procedures,我写了一个程序,实际上是搜索记录。 当我执行它时,它会给出一个错误,上面写着: 从字符串转换日期和/或时间时,转换失败 声明: ((CONVERT(varchar, DATEPART(YYYY, Tbl_Contract.ContractDate), 101)) = @Year or @Year = '') 您似乎正在将日期转换为年份值: DATEPART(YYYY,@ContractDate) 然后尝试将其转换回日期: CONVERT(varchar, DATEPART(YYYY, @Co
((CONVERT(varchar, DATEPART(YYYY, Tbl_Contract.ContractDate), 101)) = @Year or @Year = '')
您似乎正在将日期转换为年份值:
DATEPART(YYYY,@ContractDate)
然后尝试将其转换回日期:
CONVERT(varchar, DATEPART(YYYY, @ContractDate),101)
您可以尝试以下操作:编辑
datepart(yyyy, CONVERT(datetime, @ContractDate))
由于
ContractDate
是一个Varchar
,您可以使用
SubString(ContractDate, x, 4) = @YearString
或者可以封装条件
Case when IsDate(ContractDate) = 1
then ((CONVERT(varchar, DATEPART(YYYY, @a), 101)))
else NULL
end
什么是-1?还没有注释..ContractDate是Datetime字段?不,它不是Datetime字段,ContractDate是varchar ContractDate是varchar字段,不是Datetime,确切地说。这将把它从varchar转换为datetime。