Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

6 Möglichkeiten zum Konvertieren einer Zeichenfolge in einen Datums-/Uhrzeitwert in SQL Server

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 ''.