Sql 不应发生的转换问题';不会吧?

Sql 不应发生的转换问题';不会吧?,sql,sql-server-2008,ssms,Sql,Sql Server 2008,Ssms,所以我得到了这两个表,我正试图在它们之间复制数据,根据它们,我在进行转换时应该不会有问题,但我似乎有问题。以下是两个表,其中包含诊断此问题的相关信息: Table1 col1(PK, int, not null) col2(varchar(4608), null) col3(datetime, null) col4(datetime, null) col5(char(12), null) col6(datetime, null) col7(int, null) col8(datetime, nu

所以我得到了这两个表,我正试图在它们之间复制数据,根据它们,我在进行转换时应该不会有问题,但我似乎有问题。以下是两个表,其中包含诊断此问题的相关信息:

Table1
col1(PK, int, not null)
col2(varchar(4608), null)
col3(datetime, null)
col4(datetime, null)
col5(char(12), null)
col6(datetime, null)
col7(int, null)
col8(datetime, null)
col9(char(1), not null)
col10(varchar(25), null)
col11(char(1), null)
col12(char(1), null)
col13(char(1), null)
col14(uniqueidentifier, null)
col15(FK, in, null)

Table2
col1(PK, int, not null)
col2(varchar(4608), null)
col3(datetime, null)
col4(datetime, null)
col5(char(12), null)
col6(datetime, null)
col7(int, null)
col8(varchar(80), null)
col9(varchar(120), null)
col10(datetime, null)
col11(char(1), not null)
col12(varchar(25), null)
col13(char(1), null)
col14(char(1), null)
col15(char(1), null)
现在,这是奇怪的事情开始起作用的地方。表1中的第14列和第15列对应于表2中的第8列和第9列。除此之外,您可以清楚地看到哪些列根据其数据类型排列,对吗?复制这些奇数列的代码如下:(假设这是在

SET IDENTITY_INSERT Table2 ON;
DELETE FROM Table2;
INSERT INTO Table2 (
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15)
SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13
,CAST(col14 AS VARCHAR(80))
,CAST(col15 AS VARCHAR(120))
FROM Table1;
SET IDENTITY_INSERT Table2 OFF;
这是我收到的错误信息:

Conversion failed when converting date and/or time from character string.

这里发生了什么?

在您的查询中,
col10
(按我的控制)位于列列表和
select
语句中的相同位置

它在表
中是
varchar
,在表2中是
datetime`


这可能就是你的问题所在。

听起来你的专栏没有排好。无法证明这一点,因为你没有包含实际的代码。Shugthere,我编辑了它以包含其余的代码。我只是不认为诚实很重要,因为你可以假设它是什么样子。不过,谢谢。好吧,看,你说c表1中的ol14和col15对应于表2中的第8列和第9列。然而,您的insert语句将第8列和第9列放入第8列和第9列,将第14列和第15列放入第14列和第15列。我想我在某个地方读到,SQL对数据类型的排序比列名的排序更准确?看在上帝的份上,请告诉我,这些只是示例列名,而不是yo你的实际专栏。是的,你和亚伦是正确的。我在上面的评论解释了我的错误。谢谢。