积极答复者
T-SQL 查询条件中包换时间类型转换判断 提示"从字符串向 datetime 转换时失败"

问题
-
<pre lang="x-sql">
WITH ocTable AS(SELECT CAST(OccurTime AS DateTime ) AS ocTime FROM ClientLog WHERE ISDATE(OccurTime)=1) SELECT * FROM ocTable --带上查询条件就出错 WHERE ocTime Between '2010-12-12 15:38:06' AND '2010-12-12 15:38:06'
据说从2000 sp4 开始 WHERE 带有 字符串转成时间 以时间作为查询条件的都出 "从字符串向 datetime 转换时失败"
这样写就没有问题
WITH ocTable AS(SELECT CASE ISDATE(OccurTime) WHEN 1 THEN CAST(OccurTime AS DateTime ) ELSE NULL END AS ocTime FROM ClientLog ) SELECT * FROM ocTable WHERE ocTime Between CAST('2010-12-12 15:38:06' AS DATETIME) AND CAST('2010-12-12 15:38:06' AS DATETIME)
SQL 数据库的BUG 还是怎么回事
CAST CONVERT 函数转换失败以后应该 返回NULL 而不是抛出异常- 已编辑 Redforce 2011年11月4日 7:50
答案
-
CAST CONVERT 函数转换失败以后应该 返回NULL 而不是抛出异常
谁告诉你转换失败不抛出异常的?失败当然就是失败了。
想不想时已是想,不如不想都不想。- 已建议为答案 Molly Chen_Moderator 2011年11月8日 10:04
- 已标记为答案 Molly Chen_Moderator 2011年11月9日 4:05
全部回复
-
CAST CONVERT 函数转换失败以后应该 返回NULL 而不是抛出异常
谁告诉你转换失败不抛出异常的?失败当然就是失败了。
想不想时已是想,不如不想都不想。- 已建议为答案 Molly Chen_Moderator 2011年11月8日 10:04
- 已标记为答案 Molly Chen_Moderator 2011年11月9日 4:05