Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Databricks SQL
Databricks Runtime
Gibt das Ergebnis der Subtraktion von expr2
von expr1
zurück.
Syntax
expr1 - expr2
Argumente
expr1
: ein numerischer Ausdruck oder ein DATE-, TIMESTAMP- oder INTERVAL-Ausdruckexpr2
: Der akzeptierte Typ hängt vom Typ vonexpr
ab:- Wenn
expr1
ein numerischer Wert ist, mussexpr2
ein numerischer Ausdruck sein. - Wenn
expr1
ein Jahres-/Monats- oder Tages-/Zeit-Intervall ist, mussexpr2
zu der entsprechenden Intervallklasse gehören. - Andernfalls muss
expr2
ein DATE oder TIMESTAMP sein.
- Wenn
Gibt zurück
Der Ergebnistyp wird in der folgenden Reihenfolge bestimmt:
- Wenn
expr1
ein numerischer Wert ist, ist das Ergebnis der allgemeine maximale Typ der Argumente. - Wenn
expr1
ein DATE undexpr2
ein Tages-/Zeit-Intervall ist, ist das Ergebnis ein TIMESTAMP. - Wenn
expr1
ein TIMESTAMP undexpr2
ein Intervall ist, ist das Ergebnis ein TIMESTAMP. - Wenn
expr1
undexpr2
DATE-Angaben sind, ist das Ergebnis einINTERVAL DAYS
. - Wenn
expr1
oderexpr2
TIMESTAMP-Angaben sind, ist das Ergebnis einINTERVAL DAY TO SECOND
. - Wenn
expr1
undexpr2
Jahres-/Monats-Intervalle sind, ist das Ergebnis ein Jahres-/Monats-Intervall mit ausreichend breiten Einheiten, um das Ergebnis darstellen zu können. - Wenn
expr1
undexpr2
Tages-/Zeit-Intervalle sind, ist das Ergebnis ein Tages-/Zeit-Intervall mit ausreichend breiten Einheiten, um das Ergebnis darstellen zu können. - Andernfalls entspricht der Ergebnistyp
expr1
.
Wenn beide Ausdrücke ein Intervall sind, müssen sie derselben Klasse angehören.
Wenn Sie ein Jahres-/Monats-Intervall von einem DATE-Wert subtrahieren, stellt Databricks SQL sicher, dass das sich ergebende Datum wohlgeformt ist.
Wenn das Ergebnis einen Überlauf des Ergebnistyps verursacht, löst Databricks SQL einen ARITHMETIC_OVERFLOW-Fehler aus.
Verwenden Sie try_subtract, um den Überlauf zurückzugeben NULL
.
Warnung
In Databricks Runtime verursacht ein Überlauf keinen Fehler, sondern „umschließt“ das Ergebnis, wenn spark.sql.ansi.enabled auf false
festgelegt ist.
Beispiele
> 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