-
(빼기 기호) 연산자
적용 대상: Databricks SQL Databricks 런타임
expr1
에서 expr2
를 뺀 값을 반환합니다.
구문
expr1 - expr2
인수
expr1
: 숫자, DATE, TIMESTAMP 또는 INTERVAL 식입니다.expr2
: 허용되는 형식은 다음 형식expr
에 따라 달라집니다.expr1
이 숫자이면expr2
는 숫자 식이어야 합니다.expr1
이 연도-월 또는 일-시간 간격이면expr2
는 일치하는 간격 클래스여야 합니다.- 그렇지 않으면
expr2
는 DATE 또는 TIMESTAMP여야 합니다.
반품
결과 형식은 다음 순서로 결정됩니다.
expr1
이 숫자이면 결과는 인수의 공통 최대 형식입니다.expr1
이 DATE이고expr2
가 일-시간 간격이면 결과는 TIMESTAMP입니다.expr1
이 TIMESTAMP이고expr2
가 간격이면 결과는 TIMESTAMP입니다.expr1
과expr2
가 DATE이면 결과는INTERVAL DAYS
입니다.expr1
또는expr2
가 TIMESTAMP이면 결과는INTERVAL DAY TO SECOND
입니다.expr1
과expr2
가 연-월 간격이면 결과는 결과를 나타낼 수 있을 만큼 충분히 넓은 단위의 연-월 간격입니다.expr1
과expr2
가 일-시간 간격이면 결과는 결과를 나타낼 수 있는 충분히 넓은 단위의 일-시간 간격입니다.- 그렇지 않으면 결과 형식은
expr1
과 일치합니다.
두 식이 모두 간격인 경우 동일한 클래스여야 합니다.
DATE에서 연도-월 간격을 빼는 경우 Databricks SQL에서 결과 날짜가 올바른 형식이 되도록 합니다.
결과가 결과 형식을 오버플로하는 경우 Databricks SQL에서 ARITHMETIC_OVERFLOW 오류가 발생합니다.
try_subtract를 사용하여 오버플로에 대해 NULL
을 반환합니다.
Warning
Databricks Runtime에서 spark.sql.ansi.enabled가 false
인 경우 오버플로로 인해 오류가 발생하지 않고 결과를 대신 “래핑”합니다.
예제
> SELECT 2 - 1;
1
> SELECT DATE'2021-03-20' - INTERVAL '2' MONTH
2021-1-20
> SELECT TIMESTAMP'2021-03-20 12:15:29' - INTERVAL '3' SECOND
2021-03-20 12:15:26
> SELECT typeof(INTERVAL '3' DAY - INTERVAL '2' HOUR);
interval day to hour
> SELECT typeof(current_date - (current_date + INTERVAL '1' DAY));
interval day
> SELECT typeof(current_timestamp - (current_date + INTERVAL '1' DAY));
interval day to second
> SELECT DATE'2021-03-31' - INTERVAL '1' MONTH;
2021-02-28
> SELECT -100Y - 100Y;
Error: ARITHMETIC_OVERFLOW