Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Menghasilkan pengurangan expr2 dari expr1.
Sintaks
expr1 - expr2
Argumen
-
expr1: Ekspresi numerik, TANGGAL, STEMPEL WAKTU, atau INTERVAL. -
expr2: Jenis yang diterima tergantung pada jenisexpr:- Jika
expr1numerikexpr2harus berupa ekspresi numerik - Jika
expr1interval tahun-bulan atau hari-waktu,expr2harus dari kelas pencocokan interval. - Jika tidak
expr2haruslah TANGGAL atau STEMPEL WAKTU.
- Jika
Mengembalikan
Jenis hasil ditentukan dalam urutan berikut:
- Jika
expr1numerik, hasilnya adalah jenis maksimum umum dari argumen. - Jika
expr1TANGGAL danexpr2merupakan interval hari-jam hasilnya adalah STEMPEL WAKTU. - Jika
expr1STEMPEL WAKTU danexpr2merupakan interval hasilnya adalah STEMPEL WAKTU. - Jika
expr1danexpr2TANGGAL hasilnya adalahINTERVAL DAYS. - Jika
expr1danexpr2STEMPEL WAKTU hasilnya adalahINTERVAL DAY TO SECOND. - Jika
expr1danexpr2interval tahun-bulan hasilnya adalah interval tahun-bulan dari unit yang cukup lebar untuk mewakili hasilnya. - Jika
expr1danexpr2interval hari-jam hasilnya adalah interval hari-waktu dari unit yang cukup lebar untuk mewakili hasilnya. - Jika tidak, jenis hasil cocok
expr1.
Jika kedua ekspresi adalah interval mereka harus dari kelas yang sama.
Saat Anda mengurangi interval bulan tahunan dari DATE, Azure Databricks memastikan bahwa tanggal yang dihasilkan terbentuk dengan baik.
Jika hasil meluapkan jenis hasil, Azure Databricks menimbulkan kesalahan ARITHMETIC_OVERFLOW atau INTERVAL_ARITHMETIC_OVERFLOW.
Gunakan try_subtract untuk kembali NULL pada luapan.
Peringatan
Dalam Databricks Runtime, jika spark.sql.ansi.enabled adalah false, luapan tidak menyebabkan kesalahan tetapi "membungkus" hasilnya sebagai gantinya.
Kondisi kesalahan umum
Contoh
> 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