Ao usar o SQL Server, você pode converter um valor de data/hora em uma string usando o
CONVERT()
função. Esta função permite converter entre diferentes tipos de dados. Neste artigo, converteremos vários tipos de dados de data/hora para um
varchar
ou nvarchar
fragmento. Uma das vantagens dessa função é que ela permite especificar o estilo em que a data será retornada. Por exemplo, você pode especificar se ela será retornada como mm/dd/aaaa , aaaa.mm.dd , Seg dd, aaaa , etc. Você também pode especificar se o componente de tempo é retornado e como ele é estilizado.
Sintaxe
Primeiro, veja como funciona a sintaxe oficial:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Esses argumentos são definidos da seguinte forma:
expression
- Qualquer expressão válida.
data_type
- O tipo de dados de destino. Isso inclui xml , grande e sql_variant . Tipos de dados de alias não podem ser usados.
length
- Um inteiro opcional que especifica o comprimento do tipo de dados de destino. O valor padrão é
30
. style
- Uma expressão inteira que especifica como
CONVERT()
função traduzirá expressão . Para um valor de estilo de NULL, NULL é retornado. data_type determina o intervalo.
Exemplo básico
Neste exemplo, declaramos uma variável e atribuímos um valor do
GETDATE()
função. Em seguida, retornamos o valor e também convertemos esse valor em varchar
e retorne que: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 | +-------------------------+---------------------+
O comprimento padrão do tipo de dados de retorno é
30
, portanto, embora tenhamos especificado apenas varchar
, ele retornará o resultado como um varchar(30)
. Neste exemplo, não fornecemos um terceiro argumento para indicar o estilo em que queremos que ele seja retornado. Portanto, ele foi convertido usando o estilo padrão para datetime e pequena data e hora tipos de dados, que é
0
ou 100
(mais sobre estilos abaixo). Especificando um estilo
Você pode usar um terceiro argumento para especificar o estilo que o valor de retorno assumirá:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Resultado:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
Neste exemplo, especificamos um estilo de
102
, que é o padrão ANSI para exibir uma data com um componente de ano de quatro dígitos. Para mudar isso para um formato ANSI com um ano de dois dígitos, podemos usar um estilo de
2
:DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Resultado:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Você pode ver mais exemplos em CONVERT() de Date/Time to String Examples no SQL Server.