Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Função
Aplica-se a:
Databricks SQL
Databricks Runtime
Retorna expr a transmissão para uma data usando uma formatação opcional.
Sintaxe
to_date(expr [, fmt] )
Argumentos
-
expr: Uma expressão STRING que representa uma data. - fmt: Uma expressão STRING de formato opcional.
Devoluções
UMA DATA.
Se fmt for fornecido, ele deve estar em conformidade com os padrões Datetime.
Se fmt não for fornecida, a função é sinônimo de cast(expr AS DATE).
Se fmt estiver mal formado ou se a sua aplicação não resultar numa data bem formada, Azure Databricks gera um erro.
Para devolver NULL em vez de um erro quando expr estiver malformado, use try_cast(expr AS DATE) ou, no Databricks Runtime, defina spark.sql.ansi.enabled para false.
Causas e resoluções de erro comuns
to_date gera um erro quando:
-
A cadeia de entrada não corresponde ao formato esperado: Quando
fmtnão é especificado, a entrada deve estar emyyyy-MM-ddformato oryyyy-MM-dd HH:mm:ss. Se os seus dados usarem um formato diferente, comodd/MM/yyyyouMM-dd-yyyy, especifique o argumento correspondentefmt. Veja Padrões de data-hora para todas as letras do padrão suportado. -
A cadeia de entrada contém valores de data inválidos: por exemplo, mês
13, dia32, ou caracteres não numéricos onde se esperam dígitos. - A cadeia de formato utiliza letras de padrão não suportadas: Veja Padrões de data-hora para símbolos suportados e regras de formatação.
Condições de erro
-
CAST_INVALID_INPUT: Levantado quando não
fmté fornecido e a cadeia de entrada não pode ser analisada como data. -
CANNOT_PARSE_TIMESTAMP: Levantada quando
fmté fornecida, mas a cadeia de entrada não corresponde ao padrão de formato indicado.
Nota
No Databricks Runtime, se spark.sql.ansi.enabled for false, a função retornará NULL em vez de um erro para datas malformadas.
Exemplos
-- Parsing with default format (yyyy-MM-dd)
> SELECT to_date('2009-07-30 04:17:52');
2009-07-30
-- Parsing with an explicit format
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
2016-12-31
-- Parsing a non-default date format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
2016-12-31
-- Error: input is not a valid date string
> SELECT to_date('not-a-date');
Error: CAST_INVALID_INPUT
-- Error: input format doesn't match the default yyyy-MM-dd format
> SELECT to_date('31/12/2016');
Error: CAST_INVALID_INPUT
-- Fix: supply a fmt that matches the input format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
2016-12-31
-- Use try_cast to return NULL instead of an error for invalid input
> SELECT try_cast('not-a-date' AS DATE);
NULL