Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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-Ausdruck -
expr2: Der akzeptierte Typ hängt vom Typ vonexprab:- Wenn
expr1ein numerischer Wert ist, mussexpr2ein numerischer Ausdruck sein. - Wenn
expr1ein Jahres-/Monats- oder Tages-/Zeit-Intervall ist, mussexpr2zu der entsprechenden Intervallklasse gehören. - Andernfalls muss
expr2ein DATE oder TIMESTAMP sein.
- Wenn
Gibt zurück
Der Ergebnistyp wird in der folgenden Reihenfolge bestimmt:
- Wenn
expr1ein numerischer Wert ist, ist das Ergebnis der allgemeine maximale Typ der Argumente. - Wenn
expr1ein DATE undexpr2ein Tages-/Zeit-Intervall ist, ist das Ergebnis ein TIMESTAMP. - Wenn
expr1ein TIMESTAMP undexpr2ein Intervall ist, ist das Ergebnis ein TIMESTAMP. - Wenn
expr1undexpr2DATE-Angaben sind, ist das Ergebnis einINTERVAL DAYS. - Wenn
expr1oderexpr2TIMESTAMP-Angaben sind, ist das Ergebnis einINTERVAL DAY TO SECOND. - Wenn
expr1undexpr2Jahres-/Monats-Intervalle sind, ist das Ergebnis ein Jahres-/Monats-Intervall mit ausreichend breiten Einheiten, um das Ergebnis darstellen zu können. - Wenn
expr1undexpr2Tages-/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