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

时间:2012-11-16 17:05:53

标签: sql-server stored-procedures

我写了一个实际搜索记录的程序。 当我执行它时,它会给出一个错误:

  

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

说明:

((CONVERT(varchar, DATEPART(YYYY, Tbl_Contract.ContractDate), 101)) = @Year or @Year = '')

2 个答案:

答案 0 :(得分:1)

您似乎将日期转换为年份值:

DATEPART(YYYY,@ContractDate)

然后尝试将其转换回日期:

CONVERT(varchar, DATEPART(YYYY, @ContractDate),101)

您可以尝试这样做:编辑

datepart(yyyy, CONVERT(datetime, @ContractDate))

答案 1 :(得分:0)

由于ContractDateVarchar,您可以使用

解析directly
SubString(ContractDate, x, 4) = @YearString 

或者您可以封装条件

Case when IsDate(ContractDate) = 1 
      then ((CONVERT(varchar, DATEPART(YYYY, @a), 101))) 
      else NULL 
end