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

6 maneiras de converter uma string em um valor de data/hora no SQL Server


Se você precisar converter uma string em um valor de data/hora no SQL Server, terá várias opções. Neste post, descrevo seis funções T-SQL que permitem que você faça isso.

As seis funções são:
  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

Abaixo estão exemplos de como você pode usar essas funções para converter uma string em um tipo de dados de data/hora.


A função CAST()


Neste exemplo, convertemos a string em uma data tipo de dados (nós especificamos isso usando date como segundo argumento).
SELECT CAST('20 Dec 2018' AS date) AS Result;

Resultado:
+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Para obter mais exemplos, consulte Como converter uma string em uma data/hora no SQL Server usando CAST() .

A função CONVERT()


Aqui, fazemos a mesma conversão do exemplo anterior, mas com o CONVERT() função. A única diferença aqui é a sintaxe.
SELECT CONVERT(date, '20 Dec 2018') AS Result;

Resultado:
+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Para obter mais exemplos, consulte Como converter uma string em uma data/hora no SQL Server usando CONVERT() .

A função PARSE()


Neste exemplo, adiciono o dia da semana como parte da string. O motivo pelo qual faço isso é para demonstrar o benefício que essa função tem sobre as demais. Se você fornecer a data neste formato para as outras funções, receberá um erro. Mas o PARSE() função pode lidar com isso:
SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) 
AS 'Result';

Resultado:
+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Para obter mais exemplos, consulte Como converter uma string em uma data/hora no SQL Server usando PARSE() .

A função TRY_CAST()


Você pode usar TRY_CAST() em vez de CAST() para fornecer uma maneira mais suave de lidar com erros. Ao usar o CAST() função, se a conversão falhar, ela retornará um erro. No entanto, se você usar o TRY_CAST() em vez disso, ela retorna NULL em tais casos.

Aqui está um exemplo de falha de elenco:
SELECT TRY_CAST('Next month' AS date) AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Se fornecermos o mesmo valor para o CAST() função em vez disso, aqui está o que acontece:
SELECT CAST('Next month' AS date) AS Result;

Resultado:
Conversion failed when converting date and/or time from character string.

Para mais exemplos, consulte CAST vs TRY_CAST no SQL Server:Qual é a diferença?

A função TRY_CONVERT()


Você também pode usar TRY_CONVERT() em vez de CONVERT() para um melhor tratamento de erros. Se o CONVERT() a função falha, ela retorna um erro. Mas se o TRY_CONVERT() falha, ele retorna NULL .

Veja um exemplo de falha de conversão:
SELECT TRY_CONVERT(date, 'Next month') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Se fornecermos o mesmo valor para CONVERT() função em vez disso, aqui está o que acontece:
SELECT CONVERT(date, 'Next month') AS Result;

Resultado:
Conversion failed when converting date and/or time from character string.

Para mais exemplos, consulte CONVERT vs TRY_CONVERT no SQL Server:Qual é a diferença?

A função TRY_PARSE()


Você também pode usar TRY_PARSE() em vez de PARSE() para um melhor tratamento de erros. Se o PARSE() a função falha, ela retorna um erro. Mas se o TRY_PARSE() falha, ele retorna NULL .

Veja um exemplo de falha de conversão:
SELECT TRY_PARSE('Next month' AS date) AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Se fornecermos o mesmo valor para o PARSE() função em vez disso, aqui está o que acontece:
SELECT PARSE('Next month' AS date) AS Result;

Resultado:
Error converting string value 'Next month' into data type date using culture ''.