본문 바로가기
개발하는 '정'/DB

오라클 날짜 계산 (년, 월, 일, 시간 더하기/빼기)

by 주앤정_블로그 2023. 3. 15.

오라클 날짜 계산 (년, 월, 일, 시간 더하기/빼기)

 

 

1. 연도

날짜를 추출하는 extract 함수를 이용한다.

select to_char(sysdate,'YYYY-MM-DD') now
    , extract(year from sysdate)-3 before
    , extract(year from sysdate) today
    , extract(year from sysdate)+3 later
from dual

오라클 연도 계산 (더하기,빼기) 결과

 

2. 월

  월을 계산하는 함수는 "ADD_MONTHS(기준일자, 더할값)"를 사용한다.

  sysdate를 사용하여 일자를 기준으로 계산할 수도 있다. (systimestamp도 동일)

  ※ 월,일,시간의 경우 extract를 사용하면 현재 날짜는 정확히 불러오지만, 계산은 부정확할 수 있으므로 적절한 함수를 이용해야한다.

      (예로, 3월일 때 extract를 통해 3을 빼면 12월이 아닌, 0으로 표기된다. (wrong 출력값 참고) )

select to_char(sysdate,'YYYY-MM-DD') now
    
    , to_char(sysdate-90,'MM') before --90일 전
    
    , to_char(ADD_MONTHS(sysdate,-3),'MM') before_2 --3달 전
    , to_char(sysdate,'MM') today --현재
    , to_char(ADD_MONTHS(sysdate,3),'MM') later --3달 후
    
    , extract(month from sysdate)-3 wrong --잘못된 사용법
from dual

오라클 월 계산 (더하기,빼기) 결과

 

3. 일

  월 계산과 마찬가지로 sysdate를 사용하여 일자를 기준으로 계산할 수 있다. (systimestamp도 동일)

  "Next_day(기준일자,요일)" 함수를 이용하여 다음 지정요일이 며칠인지 알 수 있다.

  아래 예시에서는 '월요일'로 지정하였으니, 다음 월요일인 20일을 출력한다.

  DB 타임존이나 세팅언어이 다르다면 '월요일'을 'Monday'와 같이 변경하는 등의 수정이 필요할 수 있다.

select to_char(sysdate,'YYYY-MM-DD') now

    , to_char(sysdate-3,'DD') before --3일전
    , to_char(sysdate,'DD') today --현재
    , to_char(sysdate+3,'DD') later --3일후
    
    , to_char(NEXT_DAY(sysdate,'월요일'),'DD') next_day --다음 월요일
from dual

오라클 일 계산 (더하기,빼기,다음 요일 구하기) 결과

 

4. 시간

  시 : sysdate + nn / 24

  분 : sysdate + nn / (24*60)

  초 : sysdate + nn / (24*60*60)

         (3.일 항목에서 계산해본 바와 같이 nn은 일자를 의미하므로, 시분초는 각각 24, 24*60, 24*60*60으로 나누어야한다.)

  sysdate를 systimestamp로 변경해도 동일한 결과를 얻을 수 있다.

select to_char(sysdate,'HH:Mi:SS') now
    , to_char(sysdate+3/24,'HH:Mi:SS') hour --3시간 후
    , to_char(sysdate+3/(24*60),'HH:Mi:SS') minute --3분 후
    , to_char(sysdate+3/(24*60*60),'HH:Mi:SS') second --3초 후
from dual

오라클 시간 계산 (더하기,빼기) 결과

 

 

끝.

 

 

 

반응형

 

반응형

댓글