出力パラメータを使用してテーブルにdatetime値を挿入できないようです。
次のエラーが発生します。TSQL Mergeコマンドの出力値をテーブルに挿入するときの日付エラー
文字列から日付および/または時刻を変換するときに変換に失敗しました。
私のマージステートメントは以下の通りです。 INTO句なしでSQLを実行すると、エラーは発生しません。画面に表示されているように、出力が以下に含まれています。
私はCASTとConvertのすべてのバリエーションを試しましたが、私は見ることができますが、私はまだ同じエラーが発生します。 Getdate()によって提供される日付値を持つ通常の挿入コマンドを使用して、または以下のASCIIテーブルに示されている日付の形式で引用されたテキストを使用して、テーブルにレコードを挿入することができます。
new_createdateカラムとold_createdateカラムは、私のchangelogテーブルのdatetimeです。
私は、挿入され削除された日付がこのエラーなしでテーブルに入ることを望んでいないように思われます。
MERGE jobtbl PJP
USING myjobtbl CPI
ON PJP.jobnum = CPI.jobnum
WHEN MATCHED THEN
UPDATE
SET PJP.customer = CPI.customer,
PJP.createdate = CPI.createdate,
WHEN NOT MATCHED BY TARGET THEN
INSERT
(jobnum,
customer,
createdate)
VALUES
(cpi.jobnum,
cpi.customer,
cpi.createdate)
OUTPUT
$ACTION action,
inserted.jobnum jobnumcol,
inserted.createdate new_createdate,
deleted.createdate old_createdate,
inserted.customer new_customer,
deleted.customer old_customer,
INTO [dbo].[changeLog];
+-------+------+--------------------+--------------------+---------+--------+
|action |jobnum| new_createdate | old_createdate |new_cust |old_cust|
+-------+-----+---------------------+--------------------+---------+--------+
|UPDATE |169853| 2016-06-17 13:34:00| 2016-06-17 13:34:00| CHIENE |CHIENE |
|UPDATE |169743| 2016-05-20 14:07:00| 2016-05-20 14:07:00| DOZJOS |DOZJOS |
+-------+------+--------------------+--------------------+---------+--------+
'changeLog'テーブルの構造が' OUTPUT'の列の順序と一致していますか?テーブルDDLを投稿できますか? – iamdave
私はそう信じています。出力句で列の名前を明示的に指定していても、列の順序は重要ですか?チェンジログ表の各列は、挿入された文と削除された文に含まれていなければなりませんか? – Gork
私はあなたがエイリアスを与えているので、そう信じています。 changeLogテーブルの 'CREATE TABLE'スクリプトを投稿できますか? – iamdave