-(負號)運算符

適用於:勾選“是”磚的SQL勾選“是”磚運行時

返回的減法expr2expr1

語法

expr1-expr2

參數

  • expr1:數字、DATE、TIMESTAMP或INTERVAL表達式。

  • expr2:接受的類型取決於的類型expr

    • 如果expr1是一個數字expr2必須是數值表達式

    • 如果expr1是年-月或日-時間隔,expr2必須是interval的匹配類。

    • 否則expr2必須是日期或時間戳。

返回

結果類型的確定順序如下:

  • 如果expr1數值,則結果為參數的通用最大類型。

  • 如果expr1是日期,expr2為日-時間間隔,結果為時間戳。

  • 如果expr1是時間戳,expr2為時間間隔,則結果為時間戳。

  • 如果expr1而且expr2結果是日期嗎時間間隔

  • 如果expr1expr2TIMESTAMP的結果是時間間隔一天第二個

  • 如果expr1而且expr2是年-月間隔,結果是一個足夠寬的單位的年-月間隔來表示結果。

  • 如果expr1而且expr2是日-時間隔,結果是一個足夠寬的單位的日-時間隔來表示結果。

  • 否則,結果類型匹配expr1

如果兩個表達式都是interval,它們必須屬於同一個類。

當從日期中減去年-月間隔時,Databricks SQL確保得到的日期是格式良好的。

如果結果溢出結果類型,Databricks SQL將引發ARITHMETIC_OVERFLOW錯誤。

使用try_subtract返回在溢出。

警告

在Databricks Runtime中,如果spark.sql.ansi.enabled,溢出不會導致錯誤,而是“包裝”結果。

例子

>選擇2-11>選擇日期“2021-03-20”-時間間隔' 2 '2021-1-20.>選擇時間戳“2021-03-20 12:15:29”-時間間隔“3”第二個2021-03-20.121526>選擇typeof時間間隔“3”一天-時間間隔' 2 '小時);時間間隔一天小時>選擇typeof當前日期-當前日期+時間間隔' 1 '一天));時間間隔一天>選擇typeofcurrent_timestamp-當前日期+時間間隔' 1 '一天));時間間隔一天第二個>選擇日期“2021-03-31”-時間間隔' 1 '2021-02-28>選擇-One hundred.Y-One hundred.Y錯誤ARITHMETIC_OVERFLOW