Função CONVERT
Semelhante à função CAST, a função CONVERT converte um tipo de dado em outro compatível. Por exemplo, é possível converter uma string em uma data ou um tipo numérico em uma string. CONVERT executa uma conversão em runtime, o que significa que a conversão não altera o tipo de dado de um valor em uma tabela de origem. Isso é alterado somente no contexto da consulta.
Determinados tipos de dados exigem uma conversão explícita para outros tipos de dados usando a função CONVERT. Outros tipos de dados podem ser convertidos implicitamente, como parte de outro comando, sem usar CAST ou CONVERT. Consulte Compatibilidade e conversão dos tipos.
Sintaxe
CONVERT ( type, expression )
Argumentos
- tipo
-
Um dos Tipos de dados compatíveis.
- expressão
-
Uma expressão que avalia para um ou mais valores, tal como um nome de coluna ou um literal. A conversão de valores nulos retorna nulos. A expressão não pode conter strings em branco ou vazias.
Tipo de retorno
CONVERT retorna o tipo de dados especificado pelo argumento type.
nota
O Amazon Redshift retornará um erro se você tentar realizar uma conversão problemática, como uma conversão DECIMAL que perde precisão, como a seguinte:
SELECT CONVERT(decimal(2,1), 123.456);
ou uma conversão INTEGER que causa um transbordamento:
SELECT CONVERT(smallint, 12345678);
Exemplos
Alguns dos exemplos usam o banco de dados TICKIT como exemplo. Para ter mais informações sobre como configurar os dados de exemplo, consulte Carregar dados de amostra.
A consulta a seguir usa a função CONVERT para converter uma coluna de números decimais em inteiros.
SELECT CONVERT(integer, pricepaid) FROM sales WHERE salesid=100;
Este exemplo converte um número inteiro em uma string.
SELECT CONVERT(char(4), 2008);
Neste exemplo, a data e hora atuais são convertidas em um tipo de dados de caractere variável:
SELECT CONVERT(VARCHAR(30), GETDATE());
getdate --------- 2023-02-02 04:31:16
Este exemplo converte a coluna saletime para remover as datas de cada linha e manter apenas a hora.
SELECT CONVERT(time, saletime), salesid FROM sales order by salesid limit 10;
Para obter informações sobre como converter um carimbo de data/hora de um fuso horário para outro, consulte Função CONVERT_TIMEZONE. Para funções adicionais de data e hora, consulte Perfis de data e hora.
O exemplo a seguir converte dados de caracteres variáveis em objetos de data e hora.
SELECT CONVERT(datetime, '2008-02-18 02:36:48') as mysaletime;
nota
Não é possível executar uma operação CAST ou CONVERT no tipo de dados GEOMETRY
para alterá-lo para outro tipo de dados. No entanto, você pode fornecer uma representação hexadecimal de uma string literal em formato binário bem-conhecido estendido (EWKB - extended well-known binary) como entrada para funções que aceitam um argumento GEOMETRY
. Por exemplo, a função ST_AsText
seguinte espera um tipo de dados GEOMETRY
.
SELECT ST_AsText('01010000000000000000001C400000000000002040');
st_astext ------------ POINT(7 8)
Também é possível especificar explicitamente o tipo de dados GEOMETRY
.
SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
st_astext ------------ POINT(5 6)