Konvertieren von VARCHAR in SMALLDATETIME als Teil der UPDATE-Anweisung

Ich bin der Durchführung einer bulk-import von Daten über CSV-Dateien. In den CSV-Dateien, mein 'Date' - Spalte enthält ein Datum im format 'YYYYDDMMHHMM' (z.B. 200603010929).

Wie es steht, wenn ich die Option 'smalldatetime' beim erstellen der Tabelle, der Daten-import wird mit diesem Fehler fehlschlagen:

Massenladen von Daten Fehler bei der Konvertierung (Typenkonflikt oder ungültiges Zeichen
für die angegebene codepage) für Zeile 2, Spalte 2 (Datum).

Wie ich es verstehe, für Sie zu arbeiten muss das Datum ein bestimmtes format zu arbeiten.

Daher, eine Idee, die ich habe ist, importieren Sie die Datumswerte in einem Feld vom Typ VARCHAR, dann, wenn der import abgeschlossen ist möchte ich ein UPDATE durchführen für jede Zeile konvertieren des Datums in einen smalldatetime. Dies würde die Verlängerung der import-Prozess, aber ich denke, es wäre viel einfacher und viel schneller als der Versuch zu tun, ein suchen und ersetzen auf die CSV-Daten (es ist eine enorme Datenmenge).

So, meine Frage ist:
1) Ist das möglich?
2) Wie kann ich das umsetzen?

Dies ist, was ich habe, so weit:

UPDATE NYSE
SET [date]=CONVERT(smalldatetime, [date])

Dieser schlägt fehl, da der text nicht im richtigen format. Ist es möglich, das format der Zeichenfolge innerhalb der CONVERT-Funktion, oder gibt es eine andere Möglichkeit?

Ich Schätze alle Kommentare. Danke.

Ist es wirklich YYYYDDMM und nicht JJJJMMTT? So 20060301 ist der 3. Januar, nicht der 1. März?
Sind Sie sicher, dass die YYYYDDMM ohne Zeit ist eigentlich korrekt importiert? Diese sind vermutlich durch das vertauschen der D-und M-Werte...
So brauchen Sie sich nicht darum, ob die Daten korrekt oder nicht? So wird der Benutzer eingetragen, der 1. März, sondern Sie interpretieren es so, 3. Januar, und das ist ok? Ich bin sehr verwirrt.
Wo sehen Sie YYYY-DD-MM-auf dieser Seite?
Ich würde vorschlagen, sagen, wer liefert diese Daten, um Sie zu stoppen, die dumm über Sie, und liefern ein gültiges format. Oder pre-Prozess die Dateien mit einem sehr einfachen Kommandozeilen-Programm, bevor Sie hinzufügen der SQL Server-Komplexität.

InformationsquelleAutor Ciaran Gallagher | 2013-10-12

Schreibe einen Kommentar