Konvertieren von Varchar-Spalte in Datetime-format - SQL-Server

Ich habe eine Tabelle aus importierten Daten aus CSV wie folgt:

FirstTimeTaken      LatestTimeTaken     Market                  Outcome         Odds    NumberOfBets    VolumeMatched   InPlay
03/08/2013 15:30:14 03/08/2013 15:32:28 Over/Under 3.5 Goals    Over 3.5 Goals  5       10              118             1
03/08/2013 14:26:40 03/08/2013 14:29:43 Correct Score           0 - 0           7       12              279             1
03/08/2013 15:15:34 03/08/2013 15:27:39 Match Odds              Barnsley        110     7               9               1
28/07/2013 16:57:26 29/07/2013 21:35:55 Match Odds              Barnsley        3       9               35              0

Hatte ich zum importieren die ersten 2 Spalten in varchar-format, da war ich immer Fehler versucht zu importieren als datetime. Jetzt habe ich die Daten in einer Tabelle, die ich brauche, um zu konvertieren das format Spalte von Varchar in Datetime. Ich habe versucht:

ALTER TABLE #CSVTest_Data
ALTER COLUMN FirstTimeTaken DATETIME
ALTER TABLE #CSVTest_Data
ALTER COLUMN LatestTimeTaken DATETIME

Dies führt zu Fehler: "Die Konvertierung eines varchar-Datentyps in einen datetime-Datentyp führte zu einer out-of-range value'.
Ich weiß, dass das entfernen der letzten Zeile der Daten entledigt sich des Problems, so vermute ich, dass das system denkt, dass das Datum im format MM/DD/YYYY in der Erwägung, dass es eigentlich DD/MM/YYYY.
Die folgende Abfrage funktioniert einwandfrei:

SELECT convert(VARCHAR(50),FirstTimeTaken,105) from #CSVTest_Data 
SELECT convert(VARCHAR(50),LatestTimeTaken,105) from #CSVTest_Data

Aber dies bedeutet nicht, konvertieren Sie die Spalte format datetime. Ich würde schätzen etwas Hilfe auf, wie dies zu tun. Danke.

  • Welche Methode verwenden Sie, um diese zu importieren?
  • Eine einfache Cast(FirstTimeTaken as datetime) sollten den trick tun, wenn Sie alle Felder formatiert sind, wie die, die wir sehen.
  • Ich denke das funktioniert nicht: SELECT CAST('28/07/2013 16:57:26' AS DATETIME). Zumindest nicht in der OP-Umgebung.
  • Jonas Antwort macht viel mehr Sinn für mich jetzt. Nicht sicher, was passiert, um mein Leseverständnis....
InformationsquelleAutor Steve W | 2014-03-19
Schreibe einen Kommentar