-1

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

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

陈述:

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

2 回答 2

1

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

DATEPART(YYYY,@ContractDate)

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

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

你可以试试这个:编辑

datepart(yyyy, CONVERT(datetime, @ContractDate))
于 2012-11-16T17:59:51.663 回答
0

因为ContractDate是 aVarchar你可以directly

SubString(ContractDate, x, 4) = @YearString 

或者你可以封装条件

Case when IsDate(ContractDate) = 1 
      then ((CONVERT(varchar, DATEPART(YYYY, @a), 101))) 
      else NULL 
end
于 2012-11-16T18:01:13.047 回答