날짜/시간 연산

설명

같은 타입을 갖는 두 개의 날짜-시간 값을 서로 빼면 두 피연산자 간의 간격이 반환된다. 피연산자 두 개가 모두 DATE 타입이면 결과로 두 DATE 값 사이의 날짜가 반환된다. 피연산자가 모두 TIME 타입이거나 TIMESTAMP 타입이면, 결과로 두 값 사이의 초가 반환된다.

두 개의 TIMESTAMP 값을 더할 수는 없고, 다만 INTEGER 값(초)을 TIMESTAMP 값에 더하거나 뺄 수 있으며 연산의 결과로 TIMESTAMP 값이 반환된다.

TIMESTAMP - TIMESTAMP = INTEGER(초 단위)
TIMESTAMP + INTEGER(초 단위) = TIMESTAMP
TIMESTAMP - INTEGER(초 단위) = TIMESTAMP

TIMESTAMP와 마찬가지로, 두 개의 TIME 값을 더할 수 없다. 역시 초 단위의 INTEGER 값을 TIME 값에서 더하거나 빼면 TIME 값이 반환된다.

TIME - TIME = INTEGER(초 단위)
TIME + INTEGER(초 단위) = TIME
TIME - INTEGER(초 단위) = TIME

DATE 값에서 INTEGER 값을 더하거나 빼면 DATE 값이 반환된다. INTEGER 값 피연산자는 일 수를 의미한다. DATE 값에서 DATE 값을 뺄 수 있으며 결과로 INTEGER 값이 반환된다. 예를 들어, DATE'11/1/1994' - DATE'12/1/1994' 수식은 INTEGER 값 30을 반환한다. 하지만, DATE 값끼리 더할 수 없으니 유의해야 한다.

DATE - DATE = INTEGER(일 수)
DATE + INTEGER(일 수) = DATE
DATE - INTEGER(일 수) = DATE

예제

다음은 역대 올림픽이 개최된 기간을 계산하는 예제이다.

SELECT host_year, host_city, closing_date-opening_date+1 FROM olympic;

주의 사항