No SQL Server, você pode usar o
CONVERT()
função para converter uma expressão de um tipo de dados para outro. Portanto, se você precisar converter uma string para um formato de data/hora, esta função pode ajudar. Este artigo contém exemplos para demonstrar seu uso.
Sintaxe
A sintaxe fica assim:
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 1 – Converter em tipo de dados de data
Neste exemplo, convertemos a string em uma data tipo de dados (nós especificamos isso usando
date
como o primeiro argumento). SELECT CONVERT(date, '20 Dec 2018') AS Result;
Resultado:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Obviamente, a string precisa estar em um estilo que possa ser convertido para o tipo de dados especificado, caso contrário, você receberá um erro:
SELECT CONVERT(date, 'Homer') AS Result;
Resultado:
Conversion failed when converting date and/or time from character string.
Exemplo 2 – Converter para tipo de dados datetime
Neste exemplo, convertemos para o datetime tipo de dados:
SELECT CONVERT(datetime, '20 Dec 2018') AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
Você também pode especificar a hora:
SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Exemplo 3 – Converter para tipo de dados datetime2
Neste exemplo, convertemos para o datetime2 tipo de dados:
SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;
Resultado:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Exemplo 4 – Converter para tipo de dados datetimeoffset
Neste exemplo, convertemos para o datetimeoffset tipo de dados:
SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;
Resultado:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Exemplo 5 – Converter para tipo de dados smalldatetime
Neste exemplo, convertemos para o smalldatetime tipo de dados:
SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;
Resultado:
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
Exemplo 6 – Converter para tipo de dados de hora
Neste exemplo, convertemos para o tempo tipo de dados:
SELECT CONVERT(time, '20 Dec 2018') AS Result;
Resultado:
+----------+ | Result | |----------| | 00:00:00 | +----------+
Nesse caso, especificamos uma data, mas não uma hora, então ela voltou como
00:00:00
. Aqui está outro exemplo em que realmente especificamos um horário:SELECT CONVERT(time, '2pm') AS Result;
Resultado:
+----------+ | Result | |----------| | 14:00:00 | +----------+
Mas se adicionarmos a data, obteremos um erro (ao contrário de um exemplo anterior quando convertemos para datetime ):
SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;
Resultado:
Conversion failed when converting date and/or time from character string.
Portanto, neste caso, você precisaria converter para datetime ou smalldatetime .
Exemplo 7 – Omitindo a Data
Se você omitir a data ao converter para o datetime ou smalldatetime tipos de dados, ele retornará
1900-01-01
como a data:SELECT CONVERT(datetime, '2pm') AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Se você receber um erro ao tentar converter uma string em uma data, tente o
PARSE()
função em vez disso. Funcionará em alguns casos em que CONVERT()
não. Você também pode querer verificar o
CAST()
função, que é uma maneira padrão ANSI SQL de converter entre tipos de dados. Veja como converter uma string em uma data/hora usando CAST()
.