SQL-ORACLE/WHERE

[SQL] 날짜데이터로 조회하는 방법 2가지

이뮨01 2023. 7. 11. 13:41

날짜데이터로 값을 조회하는 방법을 배우다.


1. 날짜데이터 → 문자데이터

-- 날짜데이터로 조회하는 방법 
-- TO_CHAR 을 활용한 방법

-- 문자데이터로 만들어서 비교 (편법)
SELECT *
  FROM TB_PRD
 WHERE TO_CHAR(REG_DT, 'YYYYMMDD') = '20230501'
    OR TO_CHAR(REG_DT, 'YYYYMMDD') = '20230502';

결과

출력하고싶은 것은 2023년 5월 1일 ~ 2023년 5월 2일 까지의 것들이다. 그것들의 REG_DT를 문자열로 형변환 한후 포매팅으로 YYYYMMDD로 연월일만 꺼내준다. 그 이유는 꺼낼 조건이 연월일만 있기 때문이다. 

그것들의 연월일이 20230501 또는 20230502이면 조건에 충족한다.


2. 문자데이터 → 날짜데이터

-- 비교할 값을 날짜데이터로 만들어줌 (정석)
-- TO_DATE
SELECT *
  FROM TB_PRD
 WHERE REG_DT >= TO_DATE('20230501000000', 'YYYYMMDDHH24MISS')
   AND REG_DT <= TO_DATE('20230502235959', 'YYYYMMDDHH24MISS');

결과

날짜의 범위를 직접 문자열로 만들어서 그 문자열을 포매팅해서 날짜 데이터로 형변환하여 범위를 만들어서 사용한다.

쓰면서 BETWEEN을 사용해도 되나? 싶어서 사용해봤는데 오류가 뜬다.