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

CONVERT() von Datum/Uhrzeit in Zeichenfolge Beispiele in SQL Server

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.