0

同じサーバー上のあるデータベースから別のデータベースに挿入しようとすると、SQL Server 2000 でこのエラーが発生します。両方のテーブルの列は smalldatetime であり、NULL を許可します。

要するに、私のコードは次のとおりです。

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

おそらく、列の順序が 2 番目のテーブルのものと一致しなかったため、エラーが発生しました。文字列は日付と一致しています。私のようにスペルアウトすると、いつでもクロスチェックできます

于 2012-09-30T23:43:14.417 に答える
1

いいえ。

SQL Server に関するあらゆるマーケティングの話題にもかかわらず、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 に答える