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.
Platí pro:
Databricks SQL
Databricks Runtime
Vrátí odčítání expr2 od expr1.
Syntaxe
expr1 - expr2
Argumenty
-
expr1: Číselný výraz, DATUM, ČASOVÉ RAZÍTKO nebo INTERVAL. -
expr2: Akceptované typy závisí na typuexpr:- Pokud
expr1je číselnýexpr2výraz, musí být číselný výraz. - Pokud
expr1je interval pro rok nebo den,expr2musí být odpovídající třídou intervalu. - Jinak
expr2musí být DATE nebo TIMESTAMP.
- Pokud
Návraty
Typ výsledku je určen v následujícím pořadí:
- Pokud
expr1je argument číselný, je výsledkem běžný maximální typ argumentů. - Pokud
expr1je datem aexpr2jedná se o denní interval, výsledkem je časové razítko. - Pokud
expr1je časové razítko aexpr2jedná se o interval, je výsledkem časové razítko. - Pokud
expr1aexpr2jsou DATEs výsledkem jeINTERVAL DAYS. - Pokud
expr1neboexpr2jsou TIMESTAMP výsledek je .INTERVAL DAY TO SECOND - Pokud
expr1aexpr2jsou intervaly mezi rokem, je výsledkem interval rok-měsíc dostatečně širokých jednotek, aby představoval výsledek. - Pokud
expr1se jedná oexpr2denní intervaly, je výsledkem denní interval dostatečně širokých jednotek, aby představoval výsledek. - V opačném případě se typ výsledku shoduje
expr1.
Pokud jsou oba výrazy interval, musí mít stejnou třídu.
Když odečtete interval kalendářního roku od data, Databricks SQL zajistí, že výsledné datum bude správně formátované.
Pokud výsledek přeteče typ výsledku, sql Databricks vyvolá ARITHMETIC_OVERFLOW chybu.
K návratu do přetečení použijte NULL.
Upozorňující
Pokud je ve službě Databricks Runtime spark.sql.ansi.enabledfalse, přetečení nezpůsobí chybu, ale místo toho výsledek zabalí.
Příklady
> SELECT 2 - 1;
1
> SELECT DATE'2021-03-20' - INTERVAL '2' MONTH
2021-1-20
> SELECT TIMESTAMP'2021-03-20 12:15:29' - INTERVAL '3' SECOND
2021-03-20 12:15:26
> SELECT typeof(INTERVAL '3' DAY - INTERVAL '2' HOUR);
interval day to hour
> SELECT typeof(current_date - (current_date + INTERVAL '1' DAY));
interval day
> SELECT typeof(current_timestamp - (current_date + INTERVAL '1' DAY));
interval day to second
> SELECT DATE'2021-03-31' - INTERVAL '1' MONTH;
2021-02-28
> SELECT -100Y - 100Y;
Error: ARITHMETIC_OVERFLOW