Dies scheint eine einfache Lösung zu sein, aber ich kann nicht herausfinden, warum dies für mich nicht funktioniert. Ich habe eine Spalte mit Daten wie diese:
DateField
----------
12/16/2016
11/06/2016
Alles, was ich tun möchte, ist, von varchar
in eine date
-Spalte zu konvertieren, aber ich erhalte diesen Fehler:
Die Konvertierung ist beim Konvertieren von Datum und/oder Uhrzeit aus der Zeichenfolge fehlgeschlagen.
Hier ist meine einfache Frage:
select convert (date, DateField) as convertedField
from myTable
Nichts ist falsch an den beiden Beispielen, die Sie gegeben haben. Es gibt einige fehlerhafte Daten in Ihrer Tabelle, die nicht in Datum konvertiert werden können.
Verwenden Sie die TRY_CONVERT
-Funktion für schlechte Daten, es wird NULL
zurückgegeben.
select TRY_Convert(date,DateField)
From myTable
Sie sollten Datumsangaben immer im DATE/DATETIME
-Datentyp speichern.
Wenn Sie die Datensätze anzeigen möchten, die nicht in Datum konvertiert werden können, dann
select DateField
From myTable
Where TRY_Convert(date,DateField) IS NULL
Wenn Sie mit einem bestimmten Datumsformat wie mm/dd/yyyy
arbeiten, können Sie es in der Funktion Convert()
wie folgt angeben
CONVERT(DATETIME,DATAFIELD,101)
Wenn es immer noch nicht funktioniert, verwenden Sie TRY_CONVERT()
, um zu ermitteln, welche Zeilen diese Ausnahme auslösen:
SELECT *
FROM TBL
WHERE TRY_CONVERT(DATETIME, DATAFIELD, 101) IS NULL
Dies gibt Zeilen zurück, die nicht konvertiert werden können
TRY_CONVERT()
gibt NULL
zurück, wenn die Konvertierung fehlgeschlagen ist
Weitere Informationen zu DateTime Formaten finden Sie hier: SQL Server CONVERT () - Funktions-Tutorial
Lesen Sie TRY_CONVERT MSDN-Artikel
Sie müssen während der Formatierung das Datumsformat angeben. Das Datum in Ihrer Tabelle ist derzeit im US-Format, daher sollten Sie das dritte Argument 101 in Ihrer Konvertierungsfunktion übergeben.
SELECT CONVERT(date,[DateField],101) FROM myTable;
Fiddle hier http://rextester.com/NYKR49788 arbeiten
Weitere Informationen zum Datums-/Uhrzeitstil finden Sie hier: https://msdn.Microsoft.com/de-de/library/ms187928.aspx