[Oracle] 오라클 WHERE 절에 날짜 조건 검색 3가지 방법
- 데이터베이스/오라클
- 2023. 12. 10.
오라클의 WHERE 절에서 날짜 조건을 검색하기 위해서는 BETWEEN 연산자와 부등호 연산자를 사용한다. 조회할 날짜 칼럼에 시간이 포함되어 있다면 조건 값에 시간까지 포함해야 누락된 데이터가 없이 조회된다. 아래는 실무에서 날짜를 조회할 때 자주 사용하는 방법이니 참고해서 사용하면 된다.
목차 |
BETWEEN 연산자를 사용하여 날짜 조회
SELECT *
FROM emp
WHERE hiredate BETWEEN TO_DATE('2023-11-01', 'YYYY-MM-DD')
AND TO_DATE('2023-11-30', 'YYYY-MM-DD')
WHERE 칼럼 BETWEEN 시작일자 AND 종료일자
입사일이 11월 1일부터 11월 30일까지인 직원을 조회한다.
날짜를 조회할 때는 BETWEEN 연산자를 많이 사용한다.
날짜를 대입할 때는 TO_DATE 함수를 사용하여 날짜형으로 변환 후 입력하는 것을 권장한다.
날짜를 문자열로 입력해도 조회는 되지만 오라클 환경에 따라서 정상적으로 작동하지 않을 수 있다.
부등호(=, >, <) 연산자를 사용하여 날짜 조회
SELECT *
FROM emp
WHERE hiredate = TO_DATE('2023-11-01', 'YYYY-MM-DD')
하루 날짜만 조회할 때는 이퀄(=) 연산자를 사용하면 된다.
SELECT *
FROM emp
WHERE hiredate >= TO_DATE('2023-11-01', 'YYYY-MM-DD')
AND hiredate <= TO_DATE('2023-11-30', 'YYYY-MM-DD')
WHERE 칼럼 >= 시작일자 AND 칼럼 <= 종료일
→ WHERE 칼럼 BETWEEN 시작일자 AND 종료일자 동일한 결과
부등호 연산자를 사용하여 날짜를 조회할 수 있다. BETWEEN 연산자를 주로 사용하지만 상황에 따라서 부등호 연산자를 사용하여 날짜를 조회하는 경우도 종종 있다.
SELECT *
FROM emp
WHERE hiredate >= TO_DATE('2023-11-01', 'YYYY-MM-DD')
AND hiredate < TO_DATE('2023-11-30', 'YYYY-MM-DD')
이퀄(=) 연산자 없이 부등호 연산자만 사용하여 날짜를 검색할 수 있다.
이퀄이 없을 경우 해당일자의 초과, 미만의 데이터가 조회된다.
날짜 칼럼에 시간이 있을 경우 조회 방법 (0.99999)
SELECT *
FROM emp
WHERE editdate BETWEEN TO_DATE('2023-11-01', 'YYYY-MM-DD')
AND TO_DATE('2023-11-30', 'YYYY-MM-DD') + 0.99999
조회할 칼럼에 시간까지 포함되어 있다면 0.99999를 더해서 23시 59분 59초까지 조회할 수 있다.
TO_DATE('2023-11-30', 'YYYY-MM-DD') → 2023-11-30 00:00:00
TO_DATE('2023-11-30', 'YYYY-MM-DD') + 0.99999은
TO_DATE('2023-11-30 23:59:59', 'YYYY-MM-DD HH24:MI:SS')와 동일하다.