0

尝试在同一服务器上从一个数据库插入另一个数据库时,在 SQL Server 2000 中收到此错误。两个表上的列都是 smalldatetime 并允许空值。

简而言之,我的代码是:

INSERT INTO DB2..Table2
SELECT BirthDate, RefDate, Email, FirstName, LastName, ExitDate
FROM DB1..Table1

错误是:

Msg 295, Level 16, State 3, Line 1
Syntax error converting character string to smalldatetime data type.

当源是 smalldatetime 时,为什么会出现此错误?

4

2 回答 2

1

如果你明确地拼出这些列,它会更好,更不容易出错

INSERT INTO DB2.Table2(Birthdate, RefDate, Email, FirstName, LastName, ExitDate)
  SELECT BirthDate, RefDate, Email, FirstName, LastName, ExitDate
  FROM DB1.Table1

您收到错误可能是因为列顺序与第二个表中的列顺序不匹配,字符串与日期匹配。当你像我一样拼写出来时,你总是可以交叉检查

于 2012-09-30T23:43:14.417 回答
1

不。

尽管围绕 SQL Server 引起了所有营销热议,而且我不得不承认它是一个很棒的产品(我最喜欢的),但它并不能发挥你所要求的魔力。

考虑

Table : Columns
Table1: BirthDate, RefDate, Email, FirstName, LastName, ExitDate
Table2: BirthDate, RefDate, FirstName, LastName, ExitDate, Email

您的查询

INSERT INTO DB2..Table2
SELECT BirthDate, RefDate, Email, FirstName, LastName, ExitDate
FROM DB1..Table1

那就是您假设 SQL Server 可以匹配名称的地方,对吧?它没有。

INSERT INTO DB2..Table2
      (BirthDate, RefDate, Email, FirstName, LastName, ExitDate)
SELECT
       BirthDate, RefDate, Email, FirstName, LastName, ExitDate
FROM DB1..Table1

玩得好,把它们排成一行。看——不难。

干杯。

于 2012-09-30T23:50:41.750 回答