Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
'den expr2çıkarma işlemini expr1 döndürür.
Söz dizimi
expr1 - expr2
Bağımsız değişkenler
-
expr1: Sayısal, TARİh, ZAMAN DAMGASI veya INTERVAL ifadesi. -
expr2: Kabul edilen tür türüneexprbağlıdır:- Sayısal
expr1ise sayısalexpr2ifade olmalıdır - Yıl-ay veya gün-zaman aralığı ise
expr1,expr2eşleşen aralık sınıfından olmalıdır. - Aksi takdirde
expr2DATE veya TIMESTAMP olmalıdır.
- Sayısal
Döndürülenler
Sonuç türü aşağıdaki sırayla belirlenir:
- Sayısalsa
expr1, sonuç bağımsız değişkenlerin ortak en yüksek türüdür. - Tarih
expr1ise veexpr2gün-saat aralığıysa, sonuç bir ZAMAN DAMGASI olur. - Zaman
expr1DAMGASı ise veexpr2bir aralıksa, sonuç bir ZAMAN DAMGASI olur. - ve
expr1DAT'lar iseexpr2sonuç birINTERVAL DAYSolur. - ZAMAN DAMGASI ise
expr1veyaexpr2ise, sonuç birINTERVAL DAY TO SECONDolur. - ve
expr1yıl-ay aralıkları iseexpr2, sonuç, sonucu temsil etmek için yeterince geniş birimlerden oluşan bir yıl-ay aralığıdır. - ve
expr1gün-saat aralıkları iseexpr2, sonuç, sonucu temsil etmek için yeterince geniş birimlerden oluşan bir gün-saat 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, Azure Databricks sonuçta elde edilen tarihin iyi biçimlendirilmiş olmasını sağlar.
Sonuç, sonuç türünün taşması durumunda Azure Databricks bir ARITHMETIC_OVERFLOW veya INTERVAL_ARITHMETIC_OVERFLOW hatası oluşturur.
Taşmaya dönmek için try_subtractNULL.
Uyarı
Databricks Runtime'da spark.sql.ansi.enabled isefalse, taşma bir hataya neden olmaz, ancak sonucu "sarmalar".
Yaygın hata koşulları
Ö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