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 xml , bigint 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 .