即使查询有效,仍然会发生这种情况的原因是什么?...我的代码在下面:)
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 从字符串转换日期和/或时间时转换失败。
需要指导和提前谢谢。
答案 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)