날짜 조회 안티 패턴 두 번째 글이다.
테스트를 위해 아래와 같이 테이블을 생성하자.
-- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 AS SELECT TRUNC (SYSDATE) AS c1 FROM DUAL;
아래 쿼리는 월요일에서 금요일까지의 평일을 조회한다. 열을 가공하지 않았지만 의미를 해석하기 어렵다.
-- 2 SELECT c1 , TRUNC (SYSDATE) - TO_CHAR (SYSDATE, 'D') + 2 AS bd , TRUNC (SYSDATE) - TO_CHAR (SYSDATE, 'D') + 6.99999421 AS ed FROM t1 WHERE c1 BETWEEN TRUNC (SYSDATE) - TO_CHAR (SYSDATE, 'D') + 2 AND TRUNC (SYSDATE) - TO_CHAR (SYSDATE, 'D') + 6.99999421; C1 BD ED ------------------- ------------------- ------------------- 2019-08-16 00:00:00 2019-08-12 00:00:00 2019-08-16 23:59:59 1개의 행이 선택되었습니다.
아래 쿼리처럼 IW 포맷을 사용하면 평일을 쉽게 조회할 수 있다.
-- 3 SELECT c1 , TRUNC (SYSDATE, 'IW') AS bd , TRUNC (SYSDATE, 'IW') + 5 AS ed FROM t1 WHERE c1 >= TRUNC (SYSDATE, 'IW') AND c1 < TRUNC (SYSDATE, 'IW') + 5; C1 BD ED ------------------- ------------------- ------------------- 2019-08-16 00:00:00 2019-08-12 00:00:00 2019-08-17 00:00:00 1개의 행이 선택되었습니다.
'Oracle > Tuning' 카테고리의 다른 글
MERGE JOIN CARTESIAN (0) | 2019.08.23 |
---|---|
날짜 조회 안티 패턴 #3 (0) | 2019.08.16 |
날짜 조회 안티 패턴 #1 (0) | 2019.08.14 |
아우터 조인과 OR 조건 (0) | 2019.08.14 |
조인 순서 변경에 의한 수행 시간 증가 (0) | 2019.07.20 |