[Oracle] 오라클 SYSDATE 사용법(날짜 빼기 더하기 계산법 등)

SYSDATE 함수

SYSDATE는 지정된 형식으로 현재 날짜와 시간을 표시하는 함수이다.

 

SELECT SYSDATE
FROM DUAL;

 

위와 같은 방식으로 사용할 수 있다.

 

SYSDATE 예시
[그림 1] SYSDATE

 

사용환경에 따라 결괏값은 다르겠지만 보통 일-월-년도와 같이 출력된다.

 

 

날짜 포맷 정하기

TO_CHAR() 함수를 통하여 SYSDATE의 포맷을 원하는 대로 정할 수 있다.

 

SELECT TO_CHAR(SYSDATE, 'YYYY') as "연도"
    , TO_CHAR(SYSDATE, 'MM') as "월"
    , TO_CHAR(SYSDATE, 'DD') as "일" 
    , TO_CHAR(SYSDATE, 'HH24') as "시간"
    , TO_CHAR(SYSDATE, 'MI') as "분"
    , TO_CHAR(SYSDATE, 'SS') as "초"
    , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') as "전체날짜"
 FROM DUAL;

 

SYSDATE 포맷 설정
[그림 2] SYSDATE 포맷 설정

 

위와 같이 연도, 월, 일, 시간, 분, 초를 원하는 포맷으로 뽑아낼 수 있다.

필요한 항목만 뽑아서 쓸 수도 있다. 위와 같은 방식은 SYSDATE 뿐만 아니라 DATE 자료형을 다룰 때도 활용할 수 있다.

 

 

 

날짜형 데이터 연산

일 수 더하고 빼기

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') as "현재"
    , TO_CHAR(SYSDATE+2, 'YYYY-MM-DD') as "2일후"
    , TO_CHAR(SYSDATE+30, 'YYYY-MM-DD') as "30일후"
    , TO_CHAR(SYSDATE-1, 'YYYY-MM-DD') as "하루 전"
    , TO_CHAR(SYSDATE-10, 'YYYY-MM-DD') as "10일 전"
 FROM DUAL;

[그림 3] 날짜형 데이터 연산

 

위와 같이 SYSDATE에 숫자를 더하거나 빼면 일을 기준으로 연산을 진행한다.

즉, +1은 1일 뒤를 나타내고 -3은 3일 전을 나타낸다.

 

일 수를 더하거나 뺄 때 달이 바뀌는 것은 자동으로 계산해 준다.

 

하지만 일수가 아닌 달이나 연도를 기준으로 연산을 하기엔 불편하다. 

이럴 땐 ADD_MONTHS 함수를 사용하면 편하다.

 

달 수 더하고 빼기 (ADD_MONTHS 함수)

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') as "현재"
    ,TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM-DD') as "한달전"   
    ,TO_CHAR(ADD_MONTHS(SYSDATE,-12),'YYYY-MM-DD') as "일년전" 
    ,TO_CHAR(ADD_MONTHS(SYSDATE, 1),'YYYY-MM-DD') as "한달후"   
    ,TO_CHAR(ADD_MONTHS(SYSDATE, 24),'YYYY-MM-DD') as "2년후"  
FROM DUAL;

ADD_MONTHS
[그림 4] ADD_MONTHS 함수

 

달수를 더하거나 빼려면 위와 같이 ADD_MONTHS() 함수를 이용하면 간편하다. -1은 한 달 전, +1은 한 달 후를 계산한다. 

년도를 기준으로 계산하려면 12개월을 기준으로 계산하면 된다.

 

참고로 현재 31일 일 때 한 달 전 날짜를 계산하는데 저번 달에 30일까지 밖에 없다면, 31일이 아닌 30일을 반환한다.

 

 

반응형

댓글

Designed by JB FACTORY