- - - - - -(负号)算子

适用于:检查标记是的砖的SQL检查标记是的砖运行时

返回的减法expr2expr1

语法

expr1- - - - - -expr2

参数

  • expr1:数字、日期、时间戳或间隔表达式。

  • expr2:公认的类型取决于类型的expr:

    • 如果expr1是一个数字expr2必须是一个数字表达

    • 如果expr1是一个year-month或白天间隔,expr2必须匹配类的间隔。

    • 否则expr2必须是一个日期或时间戳。

返回

结果类型决定按照以下顺序:

  • 如果expr1是一个数字,结果是常见的最大的类型参数。

  • 如果expr1是一个日期和expr2是一个白天间隔结果是一个时间戳。

  • 如果expr1是一个时间戳,expr2是一个间隔结果是一个时间戳。

  • 如果expr1expr2结果是一个日期吗时间间隔

  • 如果expr1expr2时间戳是结果是吗时间间隔一天第二个

  • 如果expr1expr2year-month间隔的结果是一个year-month间隔足够宽的单位来表示结果。

  • 如果expr1expr2结果是一个白天是白天间隔时间间隔足够宽的单位来表示结果。

  • 否则,结果类型匹配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