이 방법은 published_date 컬럼에 인덱스가 생성되어있다면 인덱스 활용을 하지 못하기 때문에 선배에게 혼나는 작성 방법입니다.🙄(인덱스 설명 : 준비중) 인덱스에 대해 간략히 말씀드리면, 책의 목차와 같은 개념인데 전체 테이블을 확인하지 않고 컬럼 별로 Balanced Tree 형식으로 미리 만들어논 인덱스트리를 접근해, 전체 테이블 중 조건을 만족하는 일부 데이터만 확인하는 방법입니다.
2) 날짜 상수를 가공하기
보통 실무에서는 아래처럼 우변을 가공하여 사용합니다.
mysql : `PUBLISHED_DATE BETWEEN DATE('2021-01-01') AND DATE('2021-12-31')`
oracle : `PUBLISHED_DATE BETWEEN TO_DATE('2021-01-01','yyyy-mm-dd') AND TO_DATE('2021-12-31','yyyy-mm-dd')`
MySQL 풀이
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d')
FROM BOOK
WHERE PUBLISHED_DATE BETWEEN DATE('2021-01-01') AND DATE('2021-12-31')
AND CATEGORY ='인문'
ORDER BY PUBLISHED_DATE;
Oracle 풀이
SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE,'yyyy-mm-dd') as "PUBLISHED_DATE"
FROM BOOK
WHERE PUBLISHED_DATE BETWEEN TO_DATE('2021-01-01','yyyy-mm-dd') AND TO_DATE('2021-12-31','yyyy-mm-dd')
AND CATEGORY ='인문'
ORDER BY PUBLISHED_DATE;
맺음말
문제 자체는 답을 내기는 쉽지만, mysql과 oracle에서의 date 포맷하는 방법과 조건절에 date형식을 어떻게 처리할 지에 대해 생각해 볼 수 있어서 재밌는 문제였습니다.
댓글