try_subtract 函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 10.4 及更高版本

返回在溢出时从 expr1NULL 减去 expr2 得到的结果。

语法

try_subtract ( expr1 , expr2 )

参数

  • expr1:数值、DATE、TIMESTAMP 或 INTERVAL 表达式。
  • expr2:如果 expr1 是数值,则 expr2 必须是数值表达式,否则为 INTERVAL。

返回

  • 如果 expr1 是数值,则为参数的公共最大值类型。
  • 如果 expr1 是 DATE,而 expr2 是日期时间间隔,则结果是 TIMESTAMP。
  • 如果 expr1expr2 是年月时间间隔,则结果为用于表示结果的足够宽单位的年月时间间隔。
  • 如果 expr1expr2 是日期时间间隔,则结果为用于表示结果的足够宽单位的日期时间间隔。
  • 否则,结果类型与 expr1 一致。

如果两个表达式均为时间间隔,则它们必须属于同一类。

如果结果溢出结果类型,则 Databricks SQL 则返回 NULL。

在从 DATE 减去年月时间间隔时,Databricks SQL 会确保生成的日期格式正确。

示例

> SELECT try_subtract(1, 2);
 -1

> SELECT try_subtract(DATE'2021-03-20', INTERVAL '2' MONTH);
 2021-1-20

> SELECT try_subtract(TIMESTAMP'2021-03-20 12:15:29', INTERVAL '3' SECOND);
 2021-03-20 12:15:26

> SELECT typeof(try_subtract(INTERVAL '3' DAY, INTERVAL '2' HOUR));
 interval day to hour

> SELECT try_subtract(DATE'2021-03-31', INTERVAL '1' MONTH);
 2021-02-28

> SELECT try_subtract(-128Y, 1Y);
  NULL