Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Geeft als resultaat de aftrekking van expr2expr1.
Syntaxis
expr1 - expr2
Argumenten
-
expr1: Een numerieke, DATUM-, TIJD-, TIMESTAMP- of INTERVAL-expressie. -
expr2: Het geaccepteerde type is afhankelijk vanexpr1het type :- Als
expr1dit een numeriekeexpr2expressie is, moet dit een numerieke expressie zijn. - Als
expr1dit een jaar- of dagtijdinterval is,expr2moet dit een overeenkomende intervalklasse zijn. - Als
expr1dit een TIJD is,expr2moet dit een TIJD- of dagtijdinterval zijn. - Anders
expr2moet een DATUM- of TIJDSTEMPEL zijn.
- Als
Retouren
Het resultaattype wordt bepaald in de volgende volgorde:
- Als
expr1het een numerieke waarde is, is het resultaat een gemeenschappelijk maximumtype van de argumenten. - Als
expr1het een DATUM is enexpr2een dag-tijdsinterval is, is het resultaat een TIJDSTEMPEL. - Als
expr1dit een TIJD is enexpr2een daginterval is, is het resultaat een TIJD met de bredere precisie van de twee operanden. Als het resultaat buiten[00:00:00, 24:00:00)valt, verhoogt Azure Databricks DATETIME_OVERFLOW. - Als
expr1enexpr2timo's zijn, is het resultaat eenDAY-TIME INTERVAL. - Als
expr1dit een TIJDSTEMPEL is enexpr2een interval is, is het resultaat een TIJDSTEMPEL. - Als
expr1enexpr2zijn DATE's het resultaat eenINTERVAL DAYS. - Als
expr1ofexpr2timestamp is het resultaat eenINTERVAL DAY TO SECOND. - Als
expr1enexpr2jaarmaandintervallen zijn, is het resultaat een interval van een jaarmaand van voldoende brede eenheden om het resultaat weer te geven. - Als
expr1enexpr2dag-tijdintervallen zijn, is het resultaat een dag-tijdsinterval van voldoende brede eenheden om het resultaat weer te geven. - Anders komt het resultaattype overeen
expr1.
Als beide expressies interval zijn, moeten ze van dezelfde klasse zijn.
Wanneer u een interval van een jaarmaand aftrekken van een DATUM, zorgt Azure Databricks ervoor dat de resulterende datum goed is opgemaakt.
Als het resultaat het resultaattype overloopt, wordt Azure Databricks de fout ARITHMETIC_OVERFLOW of INTERVAL_ARITHMETIC_OVERFLOW gegenereerd.
Gebruik try_subtract om terug te keren NULL naar overloop.
Waarschuwing
Als in Databricks Runtime spark.sql.ansi.enabledveroorzaakt een overloop geen fout, maar 'verpakt' het resultaat.
Algemene foutvoorwaarden
Voorbeelden
> 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 TIME'12:30:00' - INTERVAL '2' HOUR
10:30:00
> SELECT TIME'14:30:00' - TIME'10:15:00'
INTERVAL '04:15:00' HOUR TO SECOND
> 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