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

时间:2013-11-20 09:25:58

标签: sql sql-server

即使查询有效,仍然会发生这种情况的原因是什么?...我的代码在下面:)

Select Cdf_Code_Tx, ProjectNo, Convert (Date, [Last Call Back],103) As LastCallBack, (CDF_New_des1_Tx+CDF_New_des2_Tx) As Description
From Products
Inner Join SpecDetails
On CDF_Code_Tx = ProductRef
Inner Join Projects2
On ProjectNo = PID
WHERE  [Last Call Back] = (SELECT MAX(Convert (Date, [Last Call Back], 103))FROM Projects2)
Order By Convert (Date, [Last Call Back], 103) 

当我运行此时,会出现此错误!

Msg 241,Level 16,State 1,Line 1 从字符串转换日期和/或时间时转换失败。

需要指导和提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你的问题就在这里 因为我似乎[Last Call Back]是Varchar()数据类型 当您转换varchar数据类型是日期并与varchar比较时,您会收到此错误 请您更改相同数据类型的两个条件

WHERE  [Last Call Back] = (SELECT MAX(Convert (Date, [Last Call Back], 103))FROM Projects2)

答案 1 :(得分:1)

我认为您需要检查表格中[Last Call Back]列的数据。检查所有数据是否对日期转换有效。我认为某些字符串无法将其转换为日期。所以你需要通过ISDate()函数检查它。 ISDDate()函数将根据您的语言和文化运行,如下所示。

SET LANGUAGE british
SELECT ISDATE('2013-11-20')   /* will return 0 */

SET LANGUAGE us_english
SELECT ISDATE('2013-11-20')   /* will return 1 */

例如,如果您的列具有如下格式,那么它将给出错误

SELECT CONVERT(DATE, '2013-11-20', 103)