SQL Server : "Conversion failed when converting datetime from character string."

标签 sql sql-server

我正在尝试使用以下方法将结果从 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/

相关文章:

sql - 使用 sqoop 和 hive 将分隔列值获取到不同的行中

mysql - 在sql中统计年龄并查看sql表中的数据

sql - Bash 清除脚本

sql - PostgreSQL: 提示inside a function error

具有可变表名并检索丢失记录的 MySQL 存储过程

sql-server - 生成按虚拟/构造列中的值排序的行号

sql-server - 如何根据列值选择真/假?

sql-server - Microsoft SQL Server 2008 主键的含义

.net - 在SQL Server中还原数据库失败

sql-server - SQL Server (SQLEXPRESS) 和 SQL Server 代理 (SQLEXPRESS)