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


Функция 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