Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
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
fmtnení zadaný, musí být vstup ve formátu neboyyyy-MM-dd HH:mm:ssveyyyy-MM-ddformátu. Pokud vaše data používají jiný formát, napříkladdd/MM/yyyyneboMM-dd-yyyy, zadejte odpovídajícífmtargument. 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, den32nebo 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
fmtzadá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