MSSQL: Varchar in datetime konvertieren
Cooper83
- datenbank
0 Jungesmedium0 Rouven
0 Vinzenz Mai
Hallo zusammen,
ich habe folgendes Problem. In meiner MSSQL Datenbank habe ich zwei Tabellen tbl_a und tbl_b, die zwar gleiche Felder (name und anzahl) haben, die felder bei der tbl_a jedoch von anderen Typen sind. Ganz speziell habe ich Probleme beim letzten Feld, welches vom Typ Datetime ist.
Die andere Tabelle (tbl_b) ist duch das Importieren einer CSV Datei entstanden. Dadurch sind zwar die gleichen Felder vorhanden wie bei der tbl_a, aber alle Felder sind vom Typ varchar(8000).
Ich muss nun alle Daten aus der tbl_b in die tbl_a schreiben. Im Prinzip ganz leicht, aber wenn ich das mache, bekomme ich folgende Fehlermeldung: "Syntaxfehler beim Konvertieren einer Zeichenfolge in eine datetime-Zeichenfolge"
Ich könnte nun jede einzelne Reihe in der tbl_b durchgehen, und die Syntax anpassen, aber bei 24 Mio Reihen dauert mir das zu lange.
Die aktuelle Syntax des Datetime feldes ist '2007-01-04 17:00:00' ich bräuchte aber glaub ich folgende syntax: '01/04/2007 17:00:00'
Gibt es ein Script oder ein Programm, welches die Zeilen ändert ?
Gruß Daniel
Die aktuelle Syntax des Datetime feldes ist '2007-01-04 17:00:00' ich bräuchte aber glaub ich folgende syntax: '01/04/2007 17:00:00'
=> Ich verstehe zwar deine Fragenstellung nicht ganz, aber:
...convert(DateTime, 'DeinWertAusDerTabeleMitDenvarChars')
MFG
Jungesmedium
Hello,
...convert(DateTime, 'DeinWertAusDerTabeleMitDenvarChars')
wobei ich nur aus Vorsicht ein Problem mit in den Topf werfe, vor dem ich unlängst stand: Mein SQL-Server 2005 fraß ohne weiteres eine Konvertierung von '2006-12-13' in den 13.12.2006. Die selbe Konvertierung (in meinem Fall Date(...)) auf einem fremden SQL-Server 2000 brachte Probleme, weile der Server meinte die Blöcke 12 und 13 austauschen zu müssen und bei einem ungültigen Datumswert landete.
MfG
Rouven
Hallo,
Die aktuelle Syntax des Datetime feldes ist '2007-01-04 17:00:00'
würdest Du auch bitte sagen, welcher Tag das sein soll? Ich vermute aufgrund des Zeitpunkts Deines Postings den 4. Januar 2007. Damit hättest Du das kanonische ODBC-Format mit Jahrhundertangabe. Laut Handbuch Typ 120.
ich bräuchte aber glaub ich folgende syntax: '01/04/2007 17:00:00'
Nein.
Gibt es ein Script oder ein Programm, welches die Zeilen ändert ?
Transact-SQL kann das :-)
SELECT CONVERT(
DATETIME, -- Zieldatentyp
'2007-01-04 17:00:00', -- zu konvertierender Wert (kann auch Spalte sein)
120 -- Datumstyp
)
Schau Dir im Handbuch den Abschnitt zu CONVERT() an.
Freundliche Grüße
Vinzenz