Função to_date

Aplica-se a:Marque Sim Databricks SQL Marque Sim 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 fmt não é especificado, a entrada deve estar em yyyy-MM-dd formato or yyyy-MM-dd HH:mm:ss . Se os seus dados usarem um formato diferente, como dd/MM/yyyy ou MM-dd-yyyy, especifique o argumento correspondente fmt . 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, dia 32, 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