- - - - - -
(負號)算子
適用於:磚的SQL磚運行時
返回的減法expr2
從expr1
。
參數
expr1
:數字、日期、時間戳或間隔表達式。expr2
:公認的類型取決於類型的expr
:如果
expr1
是一個數字expr2
必須是一個數字表達如果
expr1
是一個year-month或白天間隔,expr2
必須匹配類的間隔。否則
expr2
必須是一個日期或時間戳。
返回
結果類型決定按照以下順序:
如果
expr1
是一個數字,結果是常見的最大的類型參數。如果
expr1
是一個日期和expr2
是一個白天間隔結果是一個時間戳。如果
expr1
是一個時間戳,expr2
是一個間隔結果是一個時間戳。如果
expr1
和expr2
結果是一個日期嗎時間間隔天
。如果
expr1
或expr2
時間戳是結果是嗎時間間隔一天來第二個
。如果
expr1
和expr2
year-month間隔的結果是一個year-month間隔足夠寬的單位來表示結果。如果
expr1
和expr2
結果是一個白天是白天間隔時間間隔足夠寬的單位來表示結果。否則,結果類型匹配
expr1
。
如果兩個表達式是間隔必須同一個類的。
減去year-month間隔日期時,磚SQL確保生成的日期是格式良好的。
如果結果溢出的結果類型,提出了一個磚SQLARITHMETIC_OVERFLOW錯誤。
使用try_subtract返回零
在溢出。
警告
在磚運行時,如果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