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

Como converter um valor de data/hora em uma string no SQL Server usando CONVERT()


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