-
(eksi işareti) işleci
Şunun için geçerlidir: Databricks SQL denetimi yes Databricks Runtime
'den expr1
çıkarma işlemini expr2
döndürür.
Sözdizimi
expr1 - expr2
Bağımsız değişken
expr1
: Sayısal, TARİh, ZAMAN DAMGASI veya ARALIK ifadesi.expr2
: Kabul edilen tür türü türüneexpr
bağlıdır:- Sayısal
expr1
ise sayısalexpr2
ifade olmalıdır - Yıl-ay veya gün-zaman aralığı ise
expr1
,expr2
eşleşen aralık sınıfından olmalıdır. - Aksi takdirde
expr2
DATE veya TIMESTAMP olmalıdır.
- Sayısal
Döndürür
Sonuç türü aşağıdaki sırayla belirlenir:
- Sayısalsa
expr1
, sonuç bağımsız değişkenlerin en yüksek türüdür. expr1
Tarih ise veexpr2
gün-saat aralığıysa, sonuç zaman DAMGASı olur.- TimesTAMP
expr1
ise veexpr2
bir aralıksa, sonuç zaman DAMGASı olur. - ve
expr2
DATE'ler iseexpr1
sonuç birINTERVAL DAYS
olur. - ZAMAN DAMGASI ise
expr1
veyaexpr2
ise, sonuç birINTERVAL DAY TO SECOND
olur. - ve
expr2
yıl-ay aralıkları iseexpr1
, sonuç, sonucu temsil etmek için yeterince geniş birimlerin yıl ayı aralığıdır. - ve
expr2
gün-zaman aralıkları iseexpr1
, sonuç sonucu temsil etmek için yeterince geniş birimlerin gün-zaman aralığıdır. - Aksi takdirde sonuç türü ile eşleşir
expr1
.
Her iki ifade de aralıksa aynı sınıfta olmalıdır.
Bir TARİh'ten yıl ay aralığını çıkardığınızda Databricks SQL, sonuçta elde edilen tarihin iyi biçimlendirilmiş olmasını sağlar.
Sonuç, sonuç türüne taşıyorsa Databricks SQL bir ARITHMETIC_OVERFLOW hatası oluşturur.
Taşmaya geri dönmek NULL
için try_subtract kullanın.
Uyarı
Databricks Runtime'da spark.sql.ansi.enabled ise false
taşma bir hataya neden olmaz ancak sonucu "sarmalar".
Örnekler
> 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