- - - - - -
(负号)算子
适用于:砖的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