Database/🅾 Oracle

VARCHAR형으로 저장된 날짜와 현재 날짜의 차이 구하기 [SQL / Oracle / myBatis]

키깡 2022. 7. 18.
728x90

내가 해야할 일은 USER_SOL 테이블에서 현재로부터 '335일' 지난 계정을 찾는 것이었다.

이를 테면, VARCHAR2(14)인 칼럼 DT_LAST가 있다고 하자.
특정 데이터의 DT_LAST의 값은 아래와 같다.

Image

이 중 오늘로부터 335일 전의 데이터들만 추출하고 싶을 때, VARCHAR과 현재 날짜를 비교해야하는 것이다.

        SELECT *
        FROM USER_SOL
        WHERE 1=1
          AND TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD'), 'YYYYMMDD') - TO_DATE(SUBSTR(DT_LAST, 0, 8), 'YYYYMMDD') = 335

위와 같이 SYSDATE를 TO_CHAR을 이용해서 YYYYMMDD꼴로 변환 후, TO_DATE로 DATE형식으로 다시 변환한다. 이후, SUBSTR(DT_LAST, 0, 8) : DT_LAST 칼럼의 0번째 부터 8자리를 반환 을 TO_DATE로 YYYYMMDD 꼴로 변환해서 빼주면, ORACLE에서 날짜의 차이를 구할 수 있다.

'Database > 🅾 Oracle' 카테고리의 다른 글

칼럼 순서 변경 방법 [SQL / Oracle]  (0) 2022.07.21

댓글