2016-08-03 2 views
0

出力パラメータを使用してテーブルに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 | 
+-------+------+--------------------+--------------------+---------+--------+ 
+0

'changeLog'テーブルの構造が' OUTPUT'の列の順序と一致していますか?テーブルDDLを投稿できますか? – iamdave

+0

私はそう信じています。出力句で列の名前を明示的に指定していても、列の順序は重要ですか?チェンジログ表の各列は、挿入された文と削除された文に含まれていなければなりませんか? – Gork

+0

私はあなたがエイリアスを与えているので、そう信じています。 changeLogテーブルの 'CREATE TABLE'スクリプトを投稿できますか? – iamdave

答えて

0

インサートと一致するようにテーブルの列の順序を並べ替えます。

関連する問題