sql >> Database >  >> RDS >> Sqlserver

CONVERT() van datum/tijd naar tekenreeksvoorbeelden in SQL Server

De CONVERT() functie kunt u converteren tussen gegevenstypen. Het is vergelijkbaar met de CAST() functie, maar een van de voordelen van CONVERT() is dat wanneer u een datum/tijd-gegevenstype converteert naar een tekenreeks, u een optioneel argument kunt toevoegen dat de stijl aangeeft waarin u de geretourneerde waarde wilt hebben. U kunt het bijvoorbeeld laten retourneren als dd .mm.jjjj , jjjj-mm-dd , dd ma jjjj , enz.

Dit artikel bevat voorbeelden van de verschillende stijlen die u kunt retourneren bij het converteren van een datum/tijd-waarde naar een tekenreeks met behulp van de CONVERT() functie in SQL Server.

Basisvoorbeeld

De standaardstijl bij het converteren van de datetime en smalldatetime gegevenstypen is 0 en 100 (deze vertegenwoordigen dezelfde stijl). Daarom, als u geen stijl opgeeft (derde parameter), is deze als volgt gestyled:

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar, @date) AS Converted;

Resultaat:

+-------------------------+---------------------+
| Original                | Converted           |
|-------------------------+---------------------|
| 2018-06-07 03:08:21.997 | Jun  7 2018  3:08AM |
+-------------------------+---------------------+

U krijgt echter een ander resultaat als het oorspronkelijke gegevenstype niet datetime . is of smalldatetime .

Als je wilt dat het in een andere stijl wordt geretourneerd, moet je een derde argument opgeven.

Stijlen met tweecijferige jaartallen

Hieronder staan ​​voorbeelden van de verschillende waarden die u kunt gebruiken om de stijl te specificeren met behulp van een tweecijferige jaarcomponent.

Stijlen 1 tot 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';

Resultaat:

+----------+----------+----------+----------+----------+-----------+
| 1        | 2        | 3        | 4        | 5        | 6         |
|----------+----------+----------+----------+----------+-----------|
| 06/07/18 | 18.06.07 | 07/06/18 | 07.06.18 | 07-06-18 | 07 Jun 18 |
+----------+----------+----------+----------+----------+-----------+

Stijlen 7 tot 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';

Resultaat:

+------------+----------+----------+----------+--------+------------------+
| 7          | 8        | 10       | 11       | 12     | 14               |
|------------+----------+----------+----------+--------+------------------|
| Jun 07, 18 | 00:00:00 | 06-07-18 | 18/06/07 | 180607 | 00:00:00.0000000 |
+------------+----------+----------+----------+--------+------------------+

Stijlen met viercijferige jaartallen

Hieronder staan ​​voorbeelden van de verschillende waarden die u kunt gebruiken om de stijl te specificeren met behulp van een viercijferige jaarcomponent.

Stijlen 100 tot 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';

Resultaat:

+---------------------+------------+------------+------------+
| 100                 | 101        | 102        | 103        |
|---------------------+------------+------------+------------|
| Jun  7 2018  2:35AM | 06/07/2018 | 2018.06.07 | 07/06/2018 |
+---------------------+------------+------------+------------+

Stijlen 104 tot 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';

Resultaat:

+------------+------------+-------------+--------------+----------+
| 104        | 105        | 106         | 107          | 108      |
|------------+------------+-------------+--------------+----------|
| 07.06.2018 | 07-06-2018 | 07 Jun 2018 | Jun 07, 2018 | 02:35:52 |
+------------+------------+-------------+--------------+----------+

Stijlen 109 tot 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';

Resultaat:

+--------------------------------+------------+------------+----------+
| 109                            | 110        | 111        | 112      |
|--------------------------------+------------+------------+----------|
| Jun  7 2018  2:35:52.8537677AM | 06-07-2018 | 2018/06/07 | 20180607 |
+--------------------------------+------------+------------+----------+

Stijlen 113 tot 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';

Resultaat:

+------------------------------+------------------+
| 113                          | 114              |
|------------------------------+------------------|
| 07 Jun 2018 02:35:52.8537677 | 02:35:52.8537677 |
+------------------------------+------------------+

Stijlen 120 tot 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';

Resultaat:

+---------------------+---------------------+---------------------+
| 120                 | 126                 | 127                 |
|---------------------+---------------------+---------------------|
| 2018-06-07 00:00:00 | 2018-06-07T00:00:00 | 2018-06-07T00:00:00 |
+---------------------+---------------------+---------------------+

Stijl 130

DECLARE @date datetime2 = '2018-06-07';
SELECT    
    CONVERT(nvarchar(30), @date, 130) AS '130';

Resultaat:

+--------------------------------+
| 130                            |
|--------------------------------|
| 24 رمضان 1439 12:00:00.0000000 |
+--------------------------------+

Microsoft waarschuwt dat deze waarde niet correct wordt weergegeven op een standaard Amerikaanse installatie van SSMS.

Stijl 131

DECLARE @date datetime2 = '2018-06-07';
SELECT    
    CONVERT(nvarchar(30), @date, 131) AS '131';

Resultaat:

+-------------------------------+
| 131                           |
|-------------------------------|
| 24/09/1439 12:00:00.0000000AM |
+-------------------------------+

U kunt meer lezen over de beschikbare datum-/tijdstijlen op de Microsoft-website.


  1. EXISTS vs JOIN en gebruik van de EXISTS-clausule

  2. Een tabel maken in MySQL Workbench met behulp van de GUI

  3. ongeldige bytereeks voor codering van UTF8

  4. Hoe COMPRESS() werkt in MariaDB