데이터 분석 기술 블로그

조건에 부합하는 중고거래 댓글 조회하기 _ Lv1. 프로그래머스 * 본문

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을 사용해서 한 번 해봤다.