我正在尝试使用以下方法将结果从 View 复制到表中:
insert into tableA
select * from viewB order by id;
我收到错误消息 -
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting datetime from character string.
TableA 和 ViewB 大约有 80 个字段。试图找出哪个可能存在类型不匹配将花费很长时间。如何快速确定哪一列导致了错误?
最佳答案
这将为您提供 TableA
中具有日期相关类型(DATE、DATETIME、DATETIME2、DATETIMEOFFSET 等)的所有列的列表:
SELECT *
FROM sys.columns
WHERE object_id = object_id('TableA')
AND system_type_id IN (40, 42, 43, 58, 61)
ORDER BY name
您可以在两个表上运行此命令,看看是否发现任何差异。
或者您可以在两个表上运行它 - 它将为您提供列(名称)及其关联数据类型的列表:
SELECT
c.NAME,
t.name
FROM sys.columns c
INNER JOIN sys.types t ON c.system_type_id = t.system_type_id
WHERE object_id = object_id('TableA')
ORDER BY c.name
也许您会看到 TableB 中 varchar 类型的列被映射到 TableA 中 DATETIME 类型的列,然后通过这种方式找到罪魁祸首。
马克
关于SQL Server : "Conversion failed when converting datetime from character string.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420611/