Поделиться через


Функция try_subtract

Область применения: флажок Databricks SQL флажок Databricks Runtime 10.4 LTS и выше

Возвращает результат вычитания expr2 из expr1 или NULL при переполнении.

Синтаксис

try_subtract ( expr1 , expr2 )

Аргументы

  • expr1: числовое выражение, DATE, TIMESTAMP или INTERVAL.
  • expr2: если expr1 является числом, то expr2 должно содержать числовое выражение, а в противном случае — выражение INTERVAL.

Возвраты

  • Если аргумент expr1 является числовым, результат имеет тип, соответствующий максимальному общему типу аргументов.
  • Если параметр expr1 имеет тип DATE, а expr2 является интервалом типа "время дня", то возвращается результат с типом TIMESTAMP.
  • Если expr1 и expr2 являются интервалами "год-месяц", то результат также будет интервалом "год-месяц" с достаточно широкими единицами измерения для представления результата.
  • если expr1 и expr2 являются интервалами "время дня", то результат также будет интервалом "время дня" с достаточно широкими единицами измерения для представления результата;
  • в противном случае тип результата будет соответствовать 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