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

So konvertieren Sie eine Zeichenfolge in ein Datum/eine Uhrzeit in SQL Server mit CONVERT()

In SQL Server können Sie CONVERT() verwenden Funktion zum Konvertieren eines Ausdrucks eines Datentyps in einen anderen. Wenn Sie also einen String in ein Datums-/Uhrzeitformat umwandeln müssen, kann diese Funktion hilfreich sein.

Dieser Artikel enthält Beispiele, um seine Verwendung zu demonstrieren.

Syntax

Die Syntax lautet wie folgt:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Diese Argumente sind wie folgt definiert:

expression
Jeder gültige Ausdruck.
data_type
Der Zieldatentyp. Dazu gehört xmlbigint und sql_variant . Alias-Datentypen können nicht verwendet werden.
length
Eine optionale ganze Zahl, die die Länge des Zieldatentyps angibt. Der Standardwert ist 30 .
style
Ein ganzzahliger Ausdruck, der angibt, wie CONVERT() Funktion übersetzt Ausdruck . Für einen Stilwert von NULL wird NULL zurückgegeben. Datentyp bestimmt die Reichweite.

Beispiel 1 – In Datumsdatentyp konvertieren

In diesem Beispiel wandeln wir die Zeichenfolge in ein Datum um Datentyp (wir spezifizieren dies mit date als erstes Argument).

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Ergebnis:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Natürlich muss der String in einem Stil vorliegen, der in den angegebenen Datentyp konvertiert werden kann, sonst erhalten Sie einen Fehler:

SELECT CONVERT(date, 'Homer') AS Result;

Ergebnis:

Conversion failed when converting date and/or time from character string.

Beispiel 2 – Konvertieren in datetime-Datentyp

In diesem Beispiel konvertieren wir in datetime Datentyp:

SELECT CONVERT(datetime, '20 Dec 2018') AS Result;

Ergebnis:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 00:00:00.000 |
+-------------------------+

Sie können auch die Uhrzeit angeben:

SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;

Ergebnis:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+

Beispiel 3 – Konvertieren in den Datentyp datetime2

In diesem Beispiel konvertieren wir in datetime2 Datentyp:

SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;

Ergebnis:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Beispiel 4 – Konvertieren in datetimeoffset-Datentyp

In diesem Beispiel konvertieren wir in den datetimeoffset Datentyp:

SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;

Ergebnis:

+------------------------------------+
| Result                             |
|------------------------------------|
| 2018-12-20 00:00:00.0000000 +00:00 |
+------------------------------------+

Beispiel 5 – Konvertieren in den Datentyp smalldatetime

In diesem Beispiel konvertieren wir in smalldatetime Datentyp:

SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;

Ergebnis:

+---------------------+
| Result              |
|---------------------|
| 2018-12-20 00:00:00 |
+---------------------+

Beispiel 6 – In Zeitdatentyp konvertieren

In diesem Beispiel konvertieren wir in die Zeit Datentyp:

SELECT CONVERT(time, '20 Dec 2018') AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 00:00:00 |
+----------+

In diesem Fall haben wir ein Datum, aber keine Uhrzeit angegeben, also kam es als 00:00:00 zurück . Hier ist ein weiteres Beispiel, in dem wir tatsächlich eine Zeit angeben:

SELECT CONVERT(time, '2pm') AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 14:00:00 |
+----------+

Aber wenn wir das Datum hinzufügen, erhalten wir einen Fehler (im Gegensatz zu einem früheren Beispiel, als wir in datetime konvertiert haben ):

SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;

Ergebnis:

Conversion failed when converting date and/or time from character string.

In diesem Fall müssten Sie also in datetime konvertieren oder smalldatetime .

Beispiel 7 – Auslassen des Datums

Wenn Sie das Datum bei der Konvertierung in datetime weglassen oder smalldatetime Datentypen, wird 1900-01-01 zurückgegeben als Datum:

SELECT CONVERT(datetime, '2pm') AS Result;

Ergebnis:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

Wenn Sie beim Versuch, einen String in ein Datum umzuwandeln, eine Fehlermeldung erhalten, versuchen Sie es mit PARSE() funktionieren stattdessen. Es funktioniert in einigen Fällen, in denen CONVERT() nicht.

Vielleicht möchten Sie sich auch CAST() ansehen -Funktion, die eine ANSI-SQL-Standardmethode zum Konvertieren zwischen Datentypen ist. So konvertieren Sie eine Zeichenfolge mit CAST() in ein Datum/eine Uhrzeit .