O
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.