🔗 1. 문제 URL
프로그래머스 문제 바로가기 👉
https://school.programmers.co.kr/learn/courses/30/lessons/144854
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📝 2. 문제 요구사항 정리
이 문제는 BOOK 테이블과 AUTHOR 테이블을 JOIN하여
“경제” 카테고리에 해당하는 도서와 저자 정보를 조회하는 문제입니다.
출력 형식에서 중요한 부분은 출판일(PUBLISHED_DATE) 을
형식에 맞게 DATE_FORMAT으로 변환해야 한다는 점입니다.
✔ 요구사항 요약
- BOOK 테이블과 AUTHOR 테이블 JOIN
- B.CATEGORY가 ‘경제’인 책만 조회
- 출력: BOOK_ID, AUTHOR_NAME, PUBLICSHED_DATE
- PUBLICSHED_DATE는 ‘YYYY-MM-DD’ 형식으로 변환
- 출판일 기준 오름차순 정렬
💡 3. 핵심 개념: DATE_FORMAT으로 날짜 형식 변환
MySQL의 DATE_FORMAT(date, format) 함수는
날짜를 원하는 형식으로 가공할 때 사용됩니다.
이번 문제에서 요구하는 출력 형식은 다음과 같습니다.
%Y-%m-%d → 예) 2022-03-15
반면 다음과 같은 형식과는 의미가 다릅니다.
%Y-%M-%D %M → 영어 월 (January) %D → 1st / 2nd / 3rd 같은 서수(Ordinal) 날짜
즉, 표기를 잘못 사용하면 출력이 전혀 다르게 나오기 때문에
정확한 포맷을 선택하는 것이 핵심 포인트입니다.
📘 DATE_FORMAT 주요 포맷 정리표

✅ 4. 정답 SQL 코드
SELECT B.BOOK_ID,
A.AUTHOR_NAME,
DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLICSHED_DATE
FROM BOOK B JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE ASC;
💬 5. 풀이하면서 느낀 점
이번 문제는 JOIN 자체보다
DATE_FORMAT 함수의 포맷 형태를 정확히 구분하는 것이 핵심이었습니다.
특히 다음 두 표현이 완전히 다르다는 점을 다시 한 번 상기하게 되었고,
- %Y-%M-%D → 영어 월 + 서수 날짜
- %Y-%m-%d → 숫자 월 + 숫자 날짜(문제에서 요구하는 형식)
문제 요구사항을 맞추려면 정확한 포맷을 선택해야 함을 다시 느꼈습니다.
앞으로도 SQL 문제를 풀 때 날짜 포맷 요구조건을 꼼꼼히 보는 습관을 가져야겠다고 생각하게 된 문제였습니다.
궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊
'코딩테스트 > MYSQL' 카테고리의 다른 글
| [프로그래머스 LV.2] 재구매가 일어난 상품과 회원 리스트 구하기 — MySQL 정답 & 해설 (0) | 2025.12.03 |
|---|---|
| [프로그래머스 LV.2] 성분으로 구분한 아이스크림 총 주문량 — MySQL 정답 & 해설 (0) | 2025.12.01 |
| [프로그래머스 LV.2] 조건에 맞는 사원 정보 조회하기 — MySQL 정답 & 해설 (0) | 2025.11.29 |
| [프로그래머스 LV.2] ROOT 아이템 구하기 — MySQL 정답 & 해설 (0) | 2025.11.27 |
| [프로그래머스 LV.2] 업그레이드 된 아이템 구하기 — MySQL 정답 & 해설 (0) | 2025.11.21 |