消息 241,级别 16,状态 1,从字符串转换日期 and/or 时间时第 1 行转换失败

Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string

我有两个 T-SQL 查询,它们使用 SubstringCharindex 来解析 nvarchar 列中的文本。它们自己执行,但是当我尝试合并它们时,我得到:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

我认为这可能是因为 datetime 转换错误,所以我从这段代码中删除了转换语句:

CAST(CONCAT(SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 11) AS INT), 10), SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 23) AS INT), 9)) AS DATETIME) AS 'Start Time'

我再次运行查询并得到这个错误:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to bigint.

没有 CAST 语句试图在我的代码中将 varchar 转换为 bigint

do 有一个 window 函数,它使用创建的 datetime 列分配行号,以便我可以过滤 rn=1,这是最新的结果。

ROW_NUMBER() OVER (PARTITION BY [UnitId] ORDER BY [Start Time] DESC, UnitID DESC) AS rn

我做错了什么?

可以提供更多代码,但大部分代码如下所示:

CASE 
WHEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),1) = '1' THEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),3)
ELSE SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 14) as int),2)
END as 'Laser A Background Brightness'

发布后搜索第二个错误。与两个查询中列的顺序有关。

有一个查询:

SELECT *, rn FROM

另一个是:

SELECT rn, * FROM