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