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....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit
SET DATEFORMAT
.SET DATEFORMAT mdy
sobald Sie fertig sind, um Sie zurückzusetzen.Können Sie wählen Sie die Daten aus der Tabelle #Temp wie folgt:
Dieser gibt die Felder als DATETIME-Datentyp. Von dort aus, was Sie tun müssen.