ADDDATE, DATE_ADD 함수

설명

ADDDATE 함수와 DATE_ADD 함수는 동일하며, 특정 DATE 값에 대해 덧셈 또는 뺄셈을 실행한다. 리턴 값은 DATE 타입 또는 DATETIME 타입이다. DATETIME 타입을 반환하는 경우는 다음과 같다.

위의 경우 외에 DATETIME 타입의 결과 값을 반환하려면 CAST( ) 함수를 이용하여 첫 번째 인자 값의 타입을 변환해야 한다. 연산 결과의 날짜가 해당 월의 마지막 날짜를 초과하면, 해당 월의 말일을 적용하여 유효한 DATE 값을 반환한다.

인자의 날짜와 시간 값이 모두 0이면 시스템 파라미터 return_null_on_function_errors의 값에 따라 다른 값을 반환한다. return_null_on_function_errors가 yes이면 NULL을 반환하고 no이면 에러를 반환하며, 기본값은 no이다.

계산 결과가 '0000-00-00 00:00:00'과 '0001-01-01 00:00:00' 사이이면, 날짜와 시간 값이 모두 0인 DATE 또는 DATETIME 타입의 값을 반환한다. 그러나 JDBC 프로그램에서는 연결 URL 속성인 zeroDateTimeBehavior의 설정에 따라 동작이 달라진다("API 레퍼런스 > JDBC API > JDBC 프로그래밍 > 연결 설정" 참고).

구문

ADDDATE(date, INTERVAL expr unit)

DATE_ADD(date, INTERVAL expr unit)

ADDDATE(date, days)

unit 값에 대한 expr 값

Unit 값

expr 값

MILLISECOND

MILLISECONDS

SECOND

SECONDS

MINUTE

MINUTES

HOUR

HOURS

DAY

DAYS

WEEK

WEEKS

MONTH

MONTHS

QUARTER

QUARTERS

YEAR

YEARS

SECOND_MILLISECOND

'SECONDS.MILLISECONDS'

MINUTE_MILLISECOND

'MINUTES:SECONDS.MILLISECONDS'

MINUTE_SECOND

'MINUTES:SECONDS'

HOUR_MILLISECOND

'HOURS:MINUTES:SECONDS.MILLISECONDS'

HOUR_SECOND

'HOURS:MINUTES:SECONDS'

HOUR_MINUTE

'HOURS:MINUTES'

DAY_MILLISECOND

'DAYS HOURS:MINUTES:SECONDS.MILLISECONDS'

DAY_SECOND

'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE

'DAYS HOURS:MINUTES'

DAY_HOUR

'DAYS HOURS'

YEAR_MONTH

'YEARS-MONTHS'

예제

SELECT SYSDATE, ADDDATE(SYSDATE,INTERVAL 24 HOUR), ADDDATE(SYSDATE, 1);

 

   SYS_DATE    date_add( SYS_DATE , INTERVAL 24 HOUR)   adddate( SYS_DATE , 1)

==============================================================================

  03/30/2010  12:00:00.000 AM 03/31/2010               03/31/2010

 

--it substracts days when argument < 0

SELECT SYSDATE, ADDDATE(SYSDATE,INTERVAL -24 HOUR), ADDDATE(SYSDATE, -1);

 

   SYS_DATE    date_add( SYS_DATE , INTERVAL -24 HOUR)   adddate( SYS_DATE , -1)

==============================================================================

  03/30/2010  12:00:00.000 AM 03/29/2010               03/29/2010

 

--when expr is not fully specified for unit

select sys_datetime, adddate(sys_datetime, interval '1:20' HOUR_SECOND);

 

   SYS_DATETIME                   date_add( SYS_DATETIME , INTERVAL '1:20' HOUR_SECOND)

=======================================================================================

  06:18:24.149 PM 06/28/2010     06:19:44.149 PM 06/28/2010                            

 

SELECT ADDDATE('0000-00-00', 1 );

 

ERROR: Conversion error in date format.

 

SELECT ADDDATE('0001-01-01 00:00:00', -1);

 

adddate('0001-01-01 00:00:00', -1)

======================

'12:00:00.000 AM 00/00/0000'