DB에는 문자형식으로 일자가 들어가있는 경우가 많다. EX) 20211022
SQL을 작성하다보면 어떠한 경우에는 월말이 기준이되어야하고 두 일자가 몇일이 차이가나는지 등등 다양한 경우를 고려해야하는 경우가 온다.
자주 사용하는 함수만 정리해 보도록 하겠다.
몇개월 후, 이전의 일자를 구한다.
이전 일자를 구하려면 -를 입력해주면 된다.
SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;
SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL;
해당월의 마지막일자를 구한다.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
TRUNC 함수는 보통 소수점 아래를 자를 때 많이 사용한지만 다른 옵션들도 가지고 있다.
시간을 초기화 한다거나 일, 월을 초기화할 수가 있다.
SELECT TRUNC(SYSDATE, 'YYYY') AS YEAR -- 2022-01-01
, TRUNC(SYSDATE, 'MM') AS MONTH -- 2022-07-01
FROM DUAL
TIMESTAMP형식으로 리턴을 주기에 우리는 문자열로 자주 변환하여 사용하겠다.
자세한 내용은 다음 포스팅을 참고하기 바란다.
[DataBase/ORACLE] - [ORACLE] TO_CHAR 기본 사용법
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, 1), 'YYYYMMDD') FROM DUAL;
SELECT TO_CHAR(LAST_DAY(SYSDATE), 'YYYYMMDD') FROM DUAL;
위에 정리한 함수를 사용하여 두 일자사이의 일수 차이를 계산해 보겠다.
SELECT
TO_DATE(TO_CHAR(ADD_MONTHS(SYSDATE, 1), 'YYYYMMDD'),'YYYY-MMDD')
-
TO_DATE(TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD'), 'YYYY-MM-DD')
FROM DUAL;
[ORACLE] 문자열 처리 함수 (2) | 2021.11.05 |
---|---|
[ORACLE] 모든 테이블, 컬럼 조회 (0) | 2021.11.04 |
[ORACLE] 계층형 쿼리 START WITH CONNECT BY 사용법 (1) | 2021.10.25 |
[ORACLE] TO_CHAR 기본 사용법 (4) | 2021.10.21 |
[ORACLE] KEEP, RANK, DENSE_RANK, ROW_NUMBER (0) | 2021.09.28 |
댓글 영역