SQL/문제풀이
조건에 부합하는 중고거래 댓글 조회하기 _ Lv1. 프로그래머스 *
데이터분석가 이채은
2024. 9. 16. 09:00
Solution
SELECT
B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD B
INNER JOIN USED_GOODS_REPLY R
ON B.BOARD_ID = R.BOARD_ID
WHERE SUBSTR(B.CREATED_DATE, 1, 7) = '2022-10'
ORDER BY
R.CREATED_DATE ASC,
B.TITLE ASC;
제일 오래 걸렸던 문제다. 처음에는 DATE_FORMAT 대신 SUBSTR(R. DATE_FORMATE, 1, 7)을 사용했다. CREATED_DATE는 타입이 DATE로 나와있어서 이렇게 하니까 오류가 나서 찾아보니 DATE 타입은 DATE_FORMAT을 사용해야 한다.
DATE_FORMAT() 주요 포맷 코드
- %Y: 4자리 연도 (예: 2022)
- %y: 2자리 연도 (예: 22)
- %M: 월 이름 (예: October)
- %m: 월 (2자리 숫자, 01부터 12) (예: 10)
- %b: 월의 축약형 이름 (예: Oct)
- %D: 월의 일자와 접미사 (1st, 2nd, 3rd, ...) (예: 12th)
- %d: 일자 (2자리 숫자, 01부터 31) (예: 12)
- %e: 일자 (1자리 숫자, 1부터 31) (예: 12 → 12, 4 → 4)
- %W: 요일 이름 (예: Wednesday)
- %a: 요일의 축약형 (예: Wed)
- %w: 요일 (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
- %j: 연중 일자 (001부터 366) (예: 285)
- %H: 24시간제의 시간 (00부터 23까지)
- %h: 12시간제의 시간 (01부터 12까지)
- %i: 분 (00부터 59까지)
- %s: 초 (00부터 59까지)
- %p: AM/PM (12시간제에서 사용)
WHERE 절에서도 DATE_FORMAT을 사용해도 되지만 SUBSTR을 사용해서 한 번 해봤다.