Cooper83: MSSQL: Varchar in datetime konvertieren

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

  1. 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:

    • Hast du keine Hilfe (F1) installiert???
    • verusch es doch mal mit.

    ...convert(DateTime, 'DeinWertAusDerTabeleMitDenvarChars')

    MFG
    Jungesmedium

    1. 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

      --
      -------------------
      Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
  2. 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