将字符串转换为smalldatetime数据类型的语法错误

时间:2012-09-30 23:33:18

标签: sql-server

尝试在同一服务器上从一个数据库插入另一个数据库时,在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时,为什么会出现此错误?

2 个答案:

答案 0 :(得分:1)

如果明确列出列

,它会更好,更不容易出错
INSERT INTO DB2.Table2(Birthdate, RefDate, Email, FirstName, LastName, ExitDate)
  SELECT BirthDate, RefDate, Email, FirstName, LastName, ExitDate
  FROM DB1.Table1

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

答案 1 :(得分: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

玩得好,排队。看 - 不难。

干杯。