2016-08-03 10 views
0

Ich kann nicht scheinen, einen Datetime-Wert in eine Tabelle mithilfe von Ausgabeparametern einzufügen.
Ich bekomme den folgenden Fehler.Datum Fehler beim Einfügen von Ausgabewert aus TSQL Merge-Befehl in eine Tabelle

Konvertierung fehlgeschlagen, wenn Datum und/oder Uhrzeit aus Zeichenkette konvertiert werden.

Meine Merge-Anweisung ist unten. Wenn ich das SQL ohne die INTO-Klausel ausführe, erhalte ich keine Fehler. Die Ausgabe, wie auf dem Bildschirm gezeigt, ist unten enthalten.

Ich habe jede Variante von CAST und Convert versucht, die ich sehen kann, und ich bekomme immer noch den gleichen Fehler. Ich kann Datensätze mit regulären Einfügebefehlen mit dem Datumswert, der von Getdate() bereitgestellt wird, erfolgreich in die Tabelle einfügen oder zitierten Text in dem Format der Daten verwenden, die unten in der ASCII-Tabelle angezeigt werden.

Die Spalten new_createdate und old_createdate sind in meiner Changelog-Tabelle aktiv.

Ich bin ratlos, warum die Daten von eingefügten und gelöschten scheinen nicht in eine Tabelle ohne diesen Fehler gehen wollen.

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

Entspricht die Struktur Ihrer 'changeLog'-Tabelle der Spaltenreihenfolge in' OUTPUT'? Können Sie die Tabelle DDL posten? – iamdave

+0

Ich glaube schon. Ist die Spaltenreihenfolge wichtig, auch wenn ich die Spalten in der output-Klausel explizit benenne? Muss jede Spalte in der Changelog-Tabelle in die eingefügten und gelöschten Anweisungen eingeschlossen werden? – Gork

+0

Ich glaube schon, da Sie ihnen nur einen Alias ​​geben. Können Sie das Script 'CREATE TABLE' Ihrer ChangeLog-Tabelle posten? – iamdave

Antwort

0

Sortieren Sie die Tabellenspaltenreihenfolge so, dass sie der Einfügung entspricht.

Verwandte Themen