Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

CONVERT() de data/hora para exemplos de string no SQL Server


CONVERT() função permite converter entre tipos de dados. É semelhante ao CAST() função, mas um dos benefícios de CONVERT() é que, quando você converte de um tipo de dados de data/hora para uma string, você pode adicionar um argumento opcional que especifica o estilo no qual você deseja que o valor de retorno esteja. Por exemplo, você pode tê-lo retornado como dd .mm.aaaa , aaaa-mm-dd , dd seg aaaa , etc

Este artigo contém exemplos dos vários estilos que você pode retornar ao converter um valor de data/hora em uma string usando o CONVERT() função no SQL Server.


Exemplo básico


O estilo padrão ao converter do datetime e pequena data e hora tipos de dados é 0 e 100 (estes representam o mesmo estilo). Portanto, quando você não fornece um estilo (terceiro parâmetro), é assim que ele é estilizado:
DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar, @date) AS Converted;

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

No entanto, você obterá um resultado diferente se o tipo de dados original não for datetime ou pequena data e hora .

Se você precisar que ele seja retornado em um estilo diferente, precisará especificar um terceiro argumento.

Estilos com anos de dois dígitos


Abaixo estão exemplos dos vários valores que você pode usar para especificar o estilo usando um componente de ano de dois dígitos.

Estilos 1 a 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';

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

Estilos 7 a 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';

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

Estilos com anos de quatro dígitos


Abaixo estão exemplos dos vários valores que você pode usar para especificar o estilo usando um componente de ano de quatro dígitos.

Estilos 100 a 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';

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

Estilos 104 a 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';

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

Estilos 109 a 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';

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

Estilos 113 a 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';

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

Estilos 120 a 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';

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

Estilo 130

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

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

A Microsoft avisa que esse valor não é renderizado corretamente em uma instalação padrão dos EUA do SSMS.

Estilo 131

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

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

Você pode ler mais sobre os estilos de data/hora disponíveis no site da Microsoft.