Função to_date

Aplica-se a:marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Retorna a conversão de expr para uma data usando uma formatação opcional.

Sintaxe

to_date(expr [, fmt] )

Argumentos

  • expr: uma expressão STRING representando uma data.
  • fmt: uma expressão STRING de formatação opcional.

Retornos

Um DATE.

Se fmt for fornecido, ele deverá estar em conformidade com os padrões de datetime.

Se fmt não for fornecido, a função será um sinônimo de cast(expr AS DATE).

Se fmt estiver malformado ou seu aplicativo não resultar em uma data bem formada, Azure Databricks gerará um erro.

Para retornar NULL em vez de um erro quando expr estiver malformado, usar try_cast(expr AS DATE) ou, no Databricks Runtime, defina spark.sql.ansi.enabled como false.

Causas e resoluções de erro comuns

to_date gera um erro quando:

  • A cadeia de caracteres de entrada não corresponde ao formato esperado: quando fmt não é especificada, a entrada deve estar no formato ou yyyy-MM-dd HH:mm:ss no yyyy-MM-dd formato. Se os dados usarem um formato diferente, como dd/MM/yyyy ou MM-dd-yyyy, especifiquem o argumento correspondente fmt . Consulte padrões datetime para todas as letras padrão com suporte.
  • A cadeia de caracteres de entrada contém valores de data inválidos: por exemplo, mês 13, dia 32ou caracteres não numéricos em que os dígitos são esperados.
  • A cadeia de caracteres de formato usa letras padrão sem suporte: consulte padrões datetime para símbolos com suporte e regras de formatação.

Condições de erro

  • CAST_INVALID_INPUT: gerado quando não fmt é fornecido e a cadeia de caracteres de entrada não pode ser analisada como uma data.
  • CANNOT_PARSE_TIMESTAMP: gerado quando fmt é fornecido, mas a cadeia de caracteres de entrada não corresponde ao padrão de formato fornecido.

Observação

No Databricks Runtime, se spark.sql.ansi.enabled for false, a função retorna 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