+(加号)运算符

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回 expr1expr2 的总和。

语法

expr1 + expr2

参数

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

返回

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

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

向日期添加年-月区间时,Azure Databricks 可确保生成的日期格式正确。

如果结果溢出结果类型,则 Azure Databricks 会引发 ARITHMETIC_OVERFLOW 错误。

使用 try_add 在溢出时返回 NULL

警告

在 Databricks Runtime 中,如果 spark.sql.ansi.enabledfalse,则溢出不会导致错误,而是会将结果“换行”。

示例

> SELECT 1 + 2;
 3

> SELECT DATE'2021-03-20' + INTERVAL '2' MONTH
 2021-5-20

> SELECT TIMESTAMP'2021-03-20 12:15:29' + INTERVAL '3' SECOND
 2021-03-20 12:15:32

> SELECT typeof(INTERVAL '3' DAY + INTERVAL '2' HOUR)
 interval day to hour

> SELECT DATE'2021-03-31' + INTERVAL '1' MONTH;
 2021-04-30

> SELECT 127Y + 1Y;
 Error: ARITMETIC_OVERFLOW