본문 바로가기
Language/DB

[Programmers | SQL | SELECT 문제 풀이] 조건에 맞는 도서 리스트 출력하기 - Solution with TO_CHAR() 또는 DATE_FORMAT()

by ㅇ달빛천사ㅇ 2024. 7. 6.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | SQL CODEKATA


조건에 맞는 도서 리스트 출력하기

🏷 관련 주제 : String Date




✔️ (Oracle) Solution with TO_CHAR()

SELECT BOOK_ID
       , TO_CHAR(PUBLISHED_DATE, 'yyyy-mm-dd') PUBLISHED_DATE
FROM BOOK
WHERE CATEGORY = '인문'
      AND TO_CHAR(PUBLISHED_DATE, 'yyyy') = '2021'
ORDER BY 2;
실행 결과

✔️ (MySQL) Solution with DATE_FORMAT()

SELECT BOOK_ID
       , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATE
FROM BOOK
WHERE CATEGORY = '인문'
      AND DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021'
ORDER BY 2;
실행 결과


💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요.
결과는 출판일을 기준으로 오름차순 정렬해주세요.


1. BOOK 테이블에서 도서 ID, 출판일, 카테고리를 조회하자.

  • Oracle & MySQL
    SELECT BOOK_ID
           , PUBLISHED_DATE
           , CATEGORY
    FROM BOOK;
    실행 결과

2. 카테고리'인문'이고 출판년도'2021'인 인스턴스만 조회하자.

문자열 비교 : 칼럼 = '문자열'
날짜 비교 및 날짜 형식 변경 
Oracle : TO_CHAR(칼럼, 'yyyy') = '연도'
MySQL : DATE_FORMAT(칼럼, '%Y') = '연도'

  • Oracle
    SELECT BOOK_ID
           , PUBLISHED_DATE
           , CATEGORY
    FROM BOOK
    WHERE CATEGORY = '인문'
          AND TO_CHAR(PUBLISHED_DATE, 'yyyy') = '2021';
    실행 결과

  • MySQL
    SELECT BOOK_ID
           , PUBLISHED_DATE
           , CATEGORY
    FROM BOOK
    WHERE CATEGORY = '인문'
          AND DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021';
    실행 결과


3. 도서 ID출판일 칼럼만 조회하고 출판일을 기준으로 오름차순 정렬하자.

출판일
출력 형식 : '년-월-일'
별칭 : "PUBLISHED_DATE"

  • Oracle
    SELECT BOOK_ID
           , TO_CHAR(PUBLISHED_DATE, 'yyyy-mm-dd') PUBLISHED_DATE
    FROM BOOK
    WHERE CATEGORY = '인문'
          AND TO_CHAR(PUBLISHED_DATE, 'yyyy') = '2021'
    ORDER BY 2;
    실행 결과

  • MySQL
    SELECT BOOK_ID
           , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATE
    FROM BOOK
    WHERE CATEGORY = '인문'
          AND DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021'
    ORDER BY 2;
    실행 결과

💬 무엇을 새롭게 알았는지

칼럼의 값과 문자열이 일치하는지 비교하는 쿼리를 작성하였다.
DATE_FORMAT() 또는 TO_CHAR()로 날짜 형식을 변경 및 특정 날짜와 일치하는지 비교하는 쿼리를 작성하였다.







728x90


Top