Funkce to_date

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Vrátí expr přetypování na datum pomocí volitelného formátování.

Syntaxe

to_date(expr [, fmt] )

Argumenty

  • expr: Výraz STRING představující datum.
  • fmt: Volitelný formát výraz STRING.

Návraty

DATUM.

Pokud fmt je zadán, musí odpovídat vzorům datetime.

Pokud fmt není zadán, je funkce synonymem pro cast(expr AS DATE).

Pokud je fmt poškozený nebo jeho aplikace nemá za následek datum ve správném formátu, Azure Databricks vyvolá chybu.

Pokud chcete místo chyby vrátit NULL chybu, pokud expr je v databricks Runtime chybná, použijte try_cast(expr AS DATE) nebo ji nastavte na hodnotu spark.sql.ansi.enabledfalse.

Běžné příčiny chyb a jejich řešení

to_date vyvolá chybu, když:

  • Vstupní řetězec neodpovídá očekávanému formátu: Pokud fmt není zadaný, musí být vstup ve formátu nebo yyyy-MM-dd HH:mm:ss ve yyyy-MM-dd formátu. Pokud vaše data používají jiný formát, například dd/MM/yyyy nebo MM-dd-yyyy, zadejte odpovídající fmt argument. Viz vzory datetime pro všechna podporovaná písmena vzorů.
  • Vstupní řetězec obsahuje neplatné hodnoty kalendářních dat: například měsíc 13, den 32nebo nečíselné znaky, kde jsou číslice očekávány.
  • Formátovací řetězec používá nepodporovaná vzorová písmena: Viz vzory datetime pro podporované symboly a pravidla formátování.

Stavy chyb

  • CAST_INVALID_INPUT: Vyvolá se, pokud není zadaný žádný fmt , a vstupní řetězec nelze analyzovat jako datum.
  • CANNOT_PARSE_TIMESTAMP: Vyvolání při fmt zadání, ale vstupní řetězec neodpovídá danému vzoru formátu.

Poznámka:

Pokud je ve službě Databricks Runtime spark.sql.ansi.enabledfalse, vrátí NULL funkce místo chyby pro chybně formátovaná kalendářní data.

Příklady

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