본문 바로가기

개발노트/SQL&DB

[오라클/알티베이스] 날짜 관련 함수 (년, 월, 일 연산 등)

알티베이스는 오라클과 아주 많이 흡사한데, 기본 함수 이름/사용법 등이 비슷해서 흡사하다고 느껴진다.


(아래는 참고글(http://itpsolver.com/%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%82%A0%EC%A7%9C-%EA%B4%80%EB%A0%A8-%ED%95%A8%EC%88%98-%EB%85%84-%EC%9B%94-%EC%9D%BC-%EB%8D%94%ED%95%98%EA%B8%B0-%EB%B9%BC%EA%B8%B0-%EB%93%B1%EB%93%B1/)을 참고하여 작성한 글입니다.)


자주 사용되는데 가끔 헷갈릴 때가 있어 매번 구글에서 찾아보곤 했는데 내 블로그에 정리해놓으면 더 편할 것 같음.



날짜에 대한 반올림/반내림 값 구하기


– 날짜 중에 일(dd)에 대한 반올림

   SELECT ROUND(to_date(’17-FEB-16′,’YY-MON-DD’), ‘DAY’) FROM dual;



– 날짜 중에 월(mm)에 대한 반올림

   SELECT ROUND (to_date(’17-FEB-16′,’YY-MON-DD’), ‘MONTH’) FROM dual;



– 날짜 중에 년(yy)에 대한 반올림

   SELECT ROUND (to_date(’17-FEB-16′,’YY-MON-DD’), ‘YEAR’) FROM dual;



– 날짜 중에 일(dd)에 대한 반내림

   SELECT TRUNC(to_date(’17-FEB-16′,’YY-MON-DD’), ‘DAY’) FROM dual;



– 날짜 중에 월(mm)에 대한 반내림

   SELECT TRUNC (to_date(’17-FEB-16′,’YY-MON-DD’), ‘MONTH’) FROM dual;



– 날짜 중에 년(yy)에 대한 반내림

   SELECT TRUNC (to_date(’17-FEB-16′,’YY-MON-DD’), ‘YEAR’) FROM dual;




날짜에 대한 덧셈 연산하기


– 날짜 중에 일(dd)를 더하기 위해서

   SELECT to_date(’17-JUN-27’, ‘YY-MON-DD’) + 1 FROM dual



– 날짜 중에 월(mm)을 더하기 위해서

   SELECT ADD_MONTHS(to_date(’17-JUN-27’, ‘YY-MON-DD’),1) FROM dual;



– 날짜 중에 년(yy)을 더하기 위해서

   SELECT ADD_MONTHS(to_date(’17-JUN-27’, ‘YY-MON-DD’),12) FROM dual;



– 주어진 날짜로부터 다음 번에 나오는 월요일을 구하기 위해서

   SELECT next_day (to_date(’17-JUN-27’, ‘YY-MON-DD’) , ‘Monday’) FROM dual;




날짜에 대한 뺄셈 연산하기


– 날짜 중에 일(dd)를 빼기 위해서

   SELECT to_date(’17-JUN-27’, ‘YY-MON-DD’) – 1 FROM dual



– 날짜 중에 월(mm)을 빼기 위해서

   SELECT ADD_MONTHS(to_date(’17-JUN-27’, ‘YY-MON-DD’),-1) FROM dual;



– 날짜 중에 년(yy)을 빼기 위해서

   SELECT ADD_MONTHS(to_date(’17-JUN-27’, ‘YY-MON-DD’),-12) FROM dual;



– 두 날짜 사이의 일 수 계산 하기

   SELECT to_date(’17-JUN-29’, ‘YY-MON-DD’) – to_date(’17-JUN-27’, ‘YY-MON-DD’) FROM dual;



– 두 날짜 사이의 월 수 계산 하기

   SELECT MONTHS_BETWEEN(to_date(’17-JUN-29’, ‘YY-MON-DD’), to_date(’17-JUN-27’, ‘YY-MON-DD’)) FROM dual;



– 두 날짜 사이의 년 수 계산 하기



   SELECT days(date(’17-JUN-26′), date(’17-OCT-29’)) / 365.254

   SELECT (to_date(’17-JUN-29’, ‘YY-MON-DD’) – to_date(’17-JUN-27’, ‘YY-MON-DD’) ) /365.254 FROM dual;



 



날짜에 대한 요일/월 이름 구하기

– 주어진 날짜에서 요일 구하기



   SELECT TO_CHAR(to_date(’17-03-10′,’YY-MM-DD’), ‘DAY’) FROM dual;

   SELECT TO_CHAR (to_date(’17-03-10′,’YY-MM-DD’), ‘DY’) FROM dual;



– 주어진 날짜에서 월 이름 구하기



   SELECT TO_CHAR(to_date(’17-03-10′,’YY-MM-DD’), ‘MONTH’) FROM dual;

   SELECT TO_CHAR(to_date(’17-03-10′,’YY-MM-DD’), ‘MON’) FROM dual;



 



날짜에 대한 일/월 구하기

– 주어진 날짜에서 일 구하기

   SELECT TO_NUMBER(to_char(to_date(’17-03-10′,’YY-MM-DD’), ‘DD’)) FROM dual;



– 주어진 날짜에서 요일을 수로 구하기

   SELECT TO_NUMBER(to_char(to_date(’17-03-10′,’YY-MM-DD’), ‘D’)) FROM dual;



– 주어진 날짜에서 월 구하기

   SELECT TO_NUMBER(to_char(to_date(’17-03-10′,’YY-MM-DD’), ‘MM’)) FROM dual;



현재 일자 구하기



   SELECT SYSDATE FROM dual;

   SELECT CURRENT_DATE FROM dual;        (오라클에서만 되고 알티베이스에서는 안 됨)



해당 월의 마지막 날짜 구하기

   SELECT LAST_DAY(sysdate) FROM dual;



NEW_TIME



   NEW_TIME ( date-expression, timezone, new timezone )