조건에 맞는 도서 리스트 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/144853
문제 풀이
1 2 3 4 5
SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') AS "PUBLISHED_DATE" FROM BOOK WHERE CATEGORY = '인문' AND TO_CHAR(PUBLISHED_DATE, 'YYYY') = '2021' ORDER BY PUBLISHED_DATE ASC;
1 2 3 4 5
SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') AS "PUBLISHED_DATE" FROM BOOK WHERE CATEGORY = '인문' AND PUBLISHED_DATE BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') AND TO_DATE('2021-12-31', 'YYYY-MM-DD') ORDER BY PUBLISHED_DATE ASC;
날짜 형식의 데이터를 비교하기 위해서는
BETWEEN
을 사용하거나YEAR()
함수 등을 활용하여 연도를 비교하는 것이 더 적절하다.1 2 3 4 5
-- 오답 SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') AS "PUBLISHED_DATE" FROM BOOK WHERE PUBLISHED_DATE LIKE '2021%' AND CATEGORY = '인문' ORDER BY PUBLISHED_DATE ASC;
LIKE '2021%'
은 일반적으로 문자열 비교에 사용되는데,PUBLISHED_DATE
는 날짜 형식의 데이터이다. 날짜 형식의 데이터에 대해LIKE
를 사용하는 것은 일치하지 않는 형식으로 비교를 시도하는 것이라 오류를 발생시킬 수 있다.
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.