-(빼기 기호) 연산자

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

expr2에서 expr1를 뺀 값을 반환합니다.

구문

expr1 - expr2

인수

  • expr1: 숫자, DATE, TIME, TIMESTAMP 또는 INTERVAL 식입니다.
  • expr2: 허용되는 형식은 다음 형식 expr1에 따라 달라집니다.
    • 숫자인 경우 expr1 숫자 expr2 식이어야 합니다.
    • expr1이 연도-월 또는 일-시간 간격이면 expr2는 일치하는 간격 클래스여야 합니다.
    • TIME인 경우 expr1 TIME expr2 또는 일 시간 간격이어야 합니다.
    • 그렇지 않으면 expr2는 DATE 또는 TIMESTAMP여야 합니다.

반품

결과 형식은 다음 순서로 결정됩니다.

  • expr1이 숫자이면 결과는 인수의 공통 최대 형식입니다.
  • expr1이 DATE이고 expr2가 일-시간 간격이면 결과는 TIMESTAMP입니다.
  • TIME이고 expr2 일별 간격인 경우 expr1 결과는 두 피연산자의 전체 자릿수가 더 넓은 TIME입니다. 결과가 [00:00:00, 24:00:00) 벗어나면 Azure Databricks DATETIME_OVERFLOW 발생합니다.
  • TIME인 expr2 경우 expr1 결과는 .입니다DAY-TIME INTERVAL.
  • expr1이 TIMESTAMP이고 expr2가 간격이면 결과는 TIMESTAMP입니다.
  • expr1expr2가 DATE이면 결과는 INTERVAL DAYS입니다.
  • expr1 또는 expr2가 TIMESTAMP이면 결과는 INTERVAL DAY TO SECOND입니다.
  • expr1expr2가 연-월 간격이면 결과는 결과를 나타낼 수 있을 만큼 충분히 넓은 단위의 연-월 간격입니다.
  • expr1expr2가 일-시간 간격이면 결과는 결과를 나타낼 수 있는 충분히 넓은 단위의 일-시간 간격입니다.
  • 그렇지 않으면 결과 형식은 expr1과 일치합니다.

두 식이 모두 간격인 경우 동일한 클래스여야 합니다.

DATE에서 1년 간격을 빼면 Azure Databricks 결과 날짜가 올바른 형식인지 확인합니다.

결과가 결과 형식을 오버플로하면 Azure Databricks ARITHMETIC_OVERFLOW 또는 INTERVAL_ARITHMETIC_OVERFLOW 오류가 발생합니다.

try_subtract를 사용하여 오버플로에 대해 NULL을 반환합니다.

Warning

Databricks Runtime에서 spark.sql.ansi.enabledfalse인 경우 오버플로로 인해 오류가 발생하지 않고 결과를 대신 “래핑”합니다.

일반적인 오류 조건

예제

> 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 TIME'12:30:00' - INTERVAL '2' HOUR
 10:30:00

> SELECT TIME'14:30:00' - TIME'10:15:00'
 INTERVAL '04:15:00' HOUR TO SECOND

>  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