-
(負號)運算符
適用於:磚的SQL磚運行時
返回的減法expr2
從expr1
.
參數
expr1
:數字、DATE、TIMESTAMP或INTERVAL表達式。expr2
:接受的類型取決於的類型expr
:如果
expr1
是一個數字expr2
必須是數值表達式如果
expr1
是年-月或日-時間隔,expr2
必須是interval的匹配類。否則
expr2
必須是日期或時間戳。
返回
結果類型的確定順序如下:
如果
expr1
數值,則結果為參數的通用最大類型。如果
expr1
是日期,expr2
為日-時間間隔,結果為時間戳。如果
expr1
是時間戳,expr2
為時間間隔,則結果為時間戳。如果
expr1
而且expr2
結果是日期嗎時間間隔天
.如果
expr1
或expr2
TIMESTAMP的結果是時間間隔一天來第二個
.如果
expr1
而且expr2
是年-月間隔,結果是一個足夠寬的單位的年-月間隔來表示結果。如果
expr1
而且expr2
是日-時間隔,結果是一個足夠寬的單位的日-時間隔來表示結果。否則,結果類型匹配
expr1
.
如果兩個表達式都是interval,它們必須屬於同一個類。
當從日期中減去年-月間隔時,Databricks SQL確保得到的日期是格式良好的。
如果結果溢出結果類型,Databricks SQL將引發ARITHMETIC_OVERFLOW錯誤。
使用try_subtract返回零
在溢出。
警告
在Databricks Runtime中,如果spark.sql.ansi.enabled是假
,溢出不會導致錯誤,而是“包裝”結果。
例子
>選擇2-1;1>選擇日期“2021-03-20”-時間間隔' 2 '月2021-1-20.>選擇時間戳“2021-03-20 12:15:29”-時間間隔“3”第二個2021-03-20.12:15:26>選擇typeof(時間間隔“3”一天-時間間隔' 2 '小時);時間間隔一天來小時>選擇typeof(當前日期-(當前日期+時間間隔' 1 '一天));時間間隔一天>選擇typeof(current_timestamp-(當前日期+時間間隔' 1 '一天));時間間隔一天來第二個>選擇日期“2021-03-31”-時間間隔' 1 '月;2021-02-28>選擇-One hundred.Y-One hundred.Y;錯誤:ARITHMETIC_OVERFLOW