尝试查明错误在记录中的位置。 当我将视图A运行到4个记录,然后将该视图输入到另一个视图B时,我收到此错误。
从字符串转换日期和/或时间时转换失败。
时间是一个单独的字段而不是日期。 我不关心将时间字段添加到日期字段。 我希望从结束时间减去开始时间减去小时/分钟,并将结果显示为小时:分钟。
然而,当我使用基于id#的单独WHERE子句运行这4条记录中的每一条时,从View A中,我从未在视图B中收到错误消息。为什么会这样?我试图孤立糟糕的时间。
查看代码:
CASE WHEN LEFT(endtime,2) > 23 THEN CAST('23' + RIGHT(endtime, 3) AS TIME) WHEN endtime = '' THEN '23:59:00' ELSE CAST(endtime AS TIME)
END AS Newendtime,
CASE WHEN LEFT(starttime,2) > 23 THEN CAST('23' + RIGHT(starttime, 3) AS TIME) WHEN starttime = '' THEN '23:59:00' ELSE CAST(starttime AS TIME)
END AS NewStarttime,
我有时间:
start end
17:45 19:45
20:55 15:39
16:18 16:45
0:10 11:15
看来0:10
是罪魁祸首。但是当我只从视图A中输出那条记录时,它在视图B中运行正常。更奇怪的是当我添加另一个where子句来查看仍然输出相同记录的A时,我没有得到错误查看b。
视图B有一个WHERE子句
WHERE (NewendTime <> NewstartTime)
当我取出它运行的WHERE子句时,保留它,我得到错误。
编辑:
我看到左边的语句正在查看冒号:
。这是一个问题吗?
答案 0 :(得分:0)
正如您所指出的那样,查看左侧2个字符将无效,因为冒号前面并不总是有两个字符。为什么不像现在这样投射田地呢?它们看起来都应该是有效的。我认为没有必要执行这些案例陈述。
SELECT
CAST([start] AS TIME) AS NewStartTime,
CAST([end] AS TIME) AS NewStartTime
FROM
#times