消息 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 查询,它们使用 Substring
和 Charindex
来解析 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
我有两个 T-SQL 查询,它们使用 Substring
和 Charindex
来解析 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