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