날짜 계산 함수
-- '2021-12-22' 과 당일 사이의 달의 수를 NUMBER형 타입으로 반환
-- months_between(A,B) = A-B/30
select months_between(sysdate,to_date('2021-12-22','yyyy-mm-dd')) from dual;
-- 특정일의 달수 더한 날
select add_months(sysdate,4) from dual;
-- 특정일의 다음주 요일
select next_day(sysdate,'friday') from dual;
-- 특정일의 해당 월의 마지막 날
select last_day,(sysdate) from dual;
-- 특정일의 반올림(오후면 다음날..)
select round(sysdate,'dd') from dual;
-- 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜
select trunc(sysdate,'ww') from dual;
-- 특정일의 주 일요일(해당 주의 첫째 날)에해당하는 날짜
select trunc(sysdate,'D') from dual;
특정일까지의 간격을 년, 개월, 일로 표현하기
SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20200101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20200101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20200101', 'YYYYMMDD'))/12) * 12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('20200101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('20200101', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL;
시간 계산하기
SELECT
TRUNC(TO_DATE('20200502223443','YYYYMMDDHH24MISS')-TO_DATE('20200501213344','YYYYMMDDHH24MISS')) || ' day ' ||
TRUNC(MOD((TO_DATE('20200502223443','YYYYMMDDHH24MISS')-TO_DATE('20200501213344','YYYYMMDDHH24MISS')),1)*24)|| ' hour ' ||
TRUNC(MOD((TO_DATE('20200502223443','YYYYMMDDHH24MISS')-TO_DATE('20200501213344','YYYYMMDDHH24MISS'))*24,1)*60)|| ' minute ' ||
TRUNC(ROUND(MOD((TO_DATE('20200502223443','YYYYMMDDHH24MISS')-TO_DATE('20200501213344','YYYYMMDDHH24MISS'))*24*60,1)*60))|| ' sec '
" Time Interval "
FROM DUAL ;
특정월을 주(week)차 구하기
SELECT
'20040511' as "날짜"
, ceil((to_number(substrb('20040511', -2, 2)) + 7 - to_number(TO_CHAR(TO_DATE('20040511','YYYYMMDD'),'D')))/7) as "월별 주차"
from dual;
'Oracle' 카테고리의 다른 글
[ORACLE DB] 오라클에서 정규표현식 Regexp 함수 사용 방법 (0) | 2021.10.23 |
---|---|
오라클 락 해제 방법 - LOCK 개체 확인 (0) | 2021.10.04 |
Oracle SQL Plus 실행 명령어 모음 (0) | 2020.09.26 |
Oracle DB에서 SQL 쿼리로 달력 만들기 (0) | 2020.09.25 |
Oracle 무료 데이터베이스 Oracle Xe 2020년 기준 (0) | 2020.08.12 |