Wenn Sie in SQL Server eine Zeichenfolge in einen Datums-/Uhrzeitwert konvertieren müssen, haben Sie eine Reihe von Optionen. In diesem Beitrag skizziere ich sechs T-SQL-Funktionen, mit denen Sie dies tun können.
Die sechs Funktionen sind:
CAST()
CONVERT()
PARSE()
TRY_CAST()
TRY_CONVERT()
TRY_PARSE()
Unten sehen Sie ein Beispiel dafür, wie Sie diese Funktionen verwenden können, um eine Zeichenfolge in einen Datums-/Zeitdatentyp umzuwandeln.
Die CAST()-Funktion
In diesem Beispiel wandeln wir die Zeichenfolge in ein Datum um Datentyp (wir spezifizieren dies mit date
als zweites Argument).
SELECT CAST('20 Dec 2018' AS date) AS Result;
Ergebnis:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Weitere Beispiele finden Sie unter How to Convert a String to a Date/Time in SQL Server using CAST()
.
Die CONVERT()-Funktion
Hier machen wir die gleiche Konvertierung wie im vorherigen Beispiel, aber mit CONVERT()
Funktion. Der einzige Unterschied besteht hier in der Syntax.
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Ergebnis:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Weitere Beispiele finden Sie unter Konvertieren einer Zeichenfolge in ein Datum/eine Uhrzeit in SQL Server mithilfe von CONVERT()
.
Die PARSE()-Funktion
In diesem Beispiel füge ich den Wochentag als Teil der Zeichenfolge hinzu. Der Grund dafür ist, den Vorteil zu demonstrieren, den diese Funktion gegenüber den anderen hat. Wenn Sie das Datum in diesem Format an die anderen Funktionen übergeben, erhalten Sie eine Fehlermeldung. Aber die PARSE()
Funktion kann damit umgehen:
SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) AS 'Result';
Ergebnis:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Weitere Beispiele finden Sie unter How to Convert a String to a Date/Time in SQL Server using PARSE()
.
Die TRY_CAST()-Funktion
Sie können TRY_CAST()
verwenden statt CAST()
um einen reibungsloseren Umgang mit Fehlern zu ermöglichen. Bei Verwendung von CAST()
Wenn die Umwandlung fehlschlägt, gibt sie einen Fehler zurück. Wenn Sie jedoch TRY_CAST()
verwenden Funktion gibt sie stattdessen NULL
zurück in solchen Fällen.
Hier ist ein Beispiel für einen fehlgeschlagenen Cast:
SELECT TRY_CAST('Next month' AS date) AS Result;
Ergebnis:
+----------+ | Result | |----------| | NULL | +----------+
Wenn wir denselben Wert für CAST()
bereitstellen Funktion statt, passiert Folgendes:
SELECT CAST('Next month' AS date) AS Result;
Ergebnis:
Conversion failed when converting date and/or time from character string.
Weitere Beispiele finden Sie unter CAST
vs. TRY_CAST
in SQL Server:Was ist der Unterschied?
Die TRY_CONVERT()-Funktion
Sie können auch TRY_CONVERT()
verwenden statt CONVERT()
zur besseren Fehlerbehandlung. Wenn die CONVERT()
Funktion schlägt fehl, gibt sie einen Fehler zurück. Aber wenn der TRY_CONVERT()
fehlschlägt, gibt es NULL
zurück .
Hier ist ein Beispiel für eine fehlgeschlagene Konvertierung:
SELECT TRY_CONVERT(date, 'Next month') AS Result;
Ergebnis:
+----------+ | Result | |----------| | NULL | +----------+
Wenn wir denselben Wert für CONVERT()
bereitstellen Funktion statt, passiert Folgendes:
SELECT CONVERT(date, 'Next month') AS Result;
Ergebnis:
Conversion failed when converting date and/or time from character string.
Weitere Beispiele finden Sie unter CONVERT
vs TRY_CONVERT
in SQL Server:Was ist der Unterschied?
Die TRY_PARSE()-Funktion
Sie können auch TRY_PARSE()
verwenden statt PARSE()
zur besseren Fehlerbehandlung. Wenn die PARSE()
Funktion schlägt fehl, gibt sie einen Fehler zurück. Aber wenn der TRY_PARSE()
fehlschlägt, gibt es NULL
zurück .
Hier ist ein Beispiel für eine fehlgeschlagene Konvertierung:
SELECT TRY_PARSE('Next month' AS date) AS Result;
Ergebnis:
+----------+ | Result | |----------| | NULL | +----------+
Wenn wir denselben Wert für PARSE()
bereitstellen stattdessen funktioniert, geschieht Folgendes:
SELECT PARSE('Next month' AS date) AS Result;
Ergebnis:
Error converting string value 'Next month' into data type date using culture ''.