Das CONVERT()
Mit der Funktion können Sie zwischen Datentypen konvertieren. Es ähnelt dem CAST()
Funktion, sondern einer der Vorteile von CONVERT()
besteht darin, dass Sie beim Konvertieren von einem Datums-/Uhrzeitdatentyp in eine Zeichenfolge ein optionales Argument hinzufügen können, das den Stil angibt, in dem der Rückgabewert vorliegen soll. Beispielsweise können Sie ihn als dd zurückgeben lassen .mm.jjjj , JJJJ-MM-TT , tt mon jjjj , usw.
Dieser Artikel enthält Beispiele für die verschiedenen Stile, die Sie zurückgeben können, wenn Sie einen Datums-/Uhrzeitwert mithilfe von CONVERT()
in eine Zeichenfolge konvertieren Funktion in SQL Server.
Einfaches Beispiel
Der Standardstil beim Konvertieren von datetime und smalldatetime Datentypen ist 0
und 100
(diese stellen den gleichen Stil dar). Wenn Sie also keinen Stil (dritter Parameter) angeben, wird er folgendermaßen gestaltet:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Ergebnis:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
Sie erhalten jedoch ein anderes Ergebnis, wenn der ursprüngliche Datentyp nicht datetime ist oder smalldatetime .
Wenn es in einem anderen Stil zurückgegeben werden soll, müssen Sie ein drittes Argument angeben.
Stile mit zweistelligen Jahreszahlen
Nachfolgend finden Sie Beispiele für die verschiedenen Werte, die Sie verwenden können, um den Stil mit einer zweistelligen Jahreskomponente anzugeben.
Stile 1 bis 6
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 1) AS '1', CONVERT(nvarchar(30), @date, 2) AS '2', CONVERT(nvarchar(30), @date, 3) AS '3', CONVERT(nvarchar(30), @date, 4) AS '4', CONVERT(nvarchar(30), @date, 5) AS '5', CONVERT(nvarchar(30), @date, 6) AS '6';
Ergebnis:
+----------+----------+----------+----------+----------+-----------+ | 1 | 2 | 3 | 4 | 5 | 6 | |----------+----------+----------+----------+----------+-----------| | 06/07/18 | 18.06.07 | 07/06/18 | 07.06.18 | 07-06-18 | 07 Jun 18 | +----------+----------+----------+----------+----------+-----------+
Stile 7 bis 6
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 7) AS '7', CONVERT(nvarchar(30), @date, 8) AS '8', CONVERT(nvarchar(30), @date, 10) AS '10', CONVERT(nvarchar(30), @date, 11) AS '11', CONVERT(nvarchar(30), @date, 12) AS '12', CONVERT(nvarchar(30), @date, 14) AS '14';
Ergebnis:
+------------+----------+----------+----------+--------+------------------+ | 7 | 8 | 10 | 11 | 12 | 14 | |------------+----------+----------+----------+--------+------------------| | Jun 07, 18 | 00:00:00 | 06-07-18 | 18/06/07 | 180607 | 00:00:00.0000000 | +------------+----------+----------+----------+--------+------------------+
Stile mit vierstelligen Jahreszahlen
Nachfolgend finden Sie Beispiele für die verschiedenen Werte, die Sie verwenden können, um den Stil mit einer vierstelligen Jahreskomponente anzugeben.
Stile 100 bis 103
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 100) AS '100', CONVERT(nvarchar(30), @date, 101) AS '101', CONVERT(nvarchar(30), @date, 102) AS '102', CONVERT(nvarchar(30), @date, 103) AS '103';
Ergebnis:
+---------------------+------------+------------+------------+ | 100 | 101 | 102 | 103 | |---------------------+------------+------------+------------| | Jun 7 2018 2:35AM | 06/07/2018 | 2018.06.07 | 07/06/2018 | +---------------------+------------+------------+------------+
Stile 104 bis 108
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 104) AS '104', CONVERT(nvarchar(30), @date, 105) AS '105', CONVERT(nvarchar(30), @date, 106) AS '106', CONVERT(nvarchar(30), @date, 107) AS '107', CONVERT(nvarchar(30), @date, 108) AS '108';
Ergebnis:
+------------+------------+-------------+--------------+----------+ | 104 | 105 | 106 | 107 | 108 | |------------+------------+-------------+--------------+----------| | 07.06.2018 | 07-06-2018 | 07 Jun 2018 | Jun 07, 2018 | 02:35:52 | +------------+------------+-------------+--------------+----------+
Stile 109 bis 112
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 109) AS '109', CONVERT(nvarchar(30), @date, 110) AS '110', CONVERT(nvarchar(30), @date, 111) AS '111', CONVERT(nvarchar(30), @date, 112) AS '112';
Ergebnis:
+--------------------------------+------------+------------+----------+ | 109 | 110 | 111 | 112 | |--------------------------------+------------+------------+----------| | Jun 7 2018 2:35:52.8537677AM | 06-07-2018 | 2018/06/07 | 20180607 | +--------------------------------+------------+------------+----------+
Stile 113 bis 114
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 113) AS '113', CONVERT(nvarchar(30), @date, 114) AS '114';
Ergebnis:
+------------------------------+------------------+ | 113 | 114 | |------------------------------+------------------| | 07 Jun 2018 02:35:52.8537677 | 02:35:52.8537677 | +------------------------------+------------------+
Stile 120 bis 127
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 120) AS '120', CONVERT(nvarchar(30), @date, 126) AS '126', CONVERT(nvarchar(30), @date, 127) AS '127';
Ergebnis:
+---------------------+---------------------+---------------------+ | 120 | 126 | 127 | |---------------------+---------------------+---------------------| | 2018-06-07 00:00:00 | 2018-06-07T00:00:00 | 2018-06-07T00:00:00 | +---------------------+---------------------+---------------------+
Stil 130
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 130) AS '130';
Ergebnis:
+--------------------------------+ | 130 | |--------------------------------| | 24 رمضان 1439 12:00:00.0000000 | +--------------------------------+
Microsoft warnt davor, dass dieser Wert bei einer standardmäßigen US-Installation von SSMS nicht korrekt gerendert wird.
Stil 131
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 131) AS '131';
Ergebnis:
+-------------------------------+ | 131 | |-------------------------------| | 24/09/1439 12:00:00.0000000AM | +-------------------------------+
Weitere Informationen zu den verfügbaren Datums-/Uhrzeitstilen finden Sie auf der Microsoft-Website.