본문 바로가기
코딩테스트/SQL

SELECT > 흉부외과 또는 일반외과 의사 목록 출력하기 / DATE_FORMAT날짜포맷변환

by imsha 2025. 3. 26.
반응형
반응형

문제설명

다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAMEDR_IDLCNS_NOHIRE_YMDMCDP_CDTLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.

Column Name Type Nullable
DR_NAME VARCHAR(20) FALSE
DR_ID VARCHAR(10) FALSE
LCNS_NO VARCHAR(30) FALSE
HIRE_YMD DATE FALSE
MCDP_CD VARCHAR(6) TRUE
TLNO VARCHAR(50) TRUE

문제

DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.

풀이

SELECT 
        DR_NAME,
        DR_ID,
        MCDP_CD,
        DATE_FORMAT(HIRE_YMD,'%Y-%m-%d') AS HIRE_YMD
FROM
        DOCTOR
WHERE
        MCDP_CD IN ('CS','GS')
ORDER BY
        HIRE_YMD DESC,
        DR_NAME ASC

학습

✅ MySQL에서 날짜 → 문자열 변환 및 포맷 방법

📌 DATE_FORMAT() 함수 사용

DATE_FORMAT(date값, '원하는 포맷')

 


✅ 예제 1: YYYY/MM/DD 형식

 
SELECT DATE_FORMAT('2021-01-12 00:01:44', '%Y/%m/%d'); -- 결과: '2021/01/12'

✅ 예제 2: YYYY년 MM월 DD일 형식

SELECT DATE_FORMAT('2021-01-12 00:01:44', '%Y년 %m월 %d일'); -- 결과: '2021년 01월 12일'

✅ 예제 3: YY.MM.DD 형식

SELECT DATE_FORMAT('2021-01-12 00:01:44', '%y.%m.%d'); -- 결과: '21.01.12'

✅ 주요 포맷 코드 정리

%Y 연도(4자리) 2021
%y 연도(2자리) 21
%m 월(2자리) 01 ~ 12
%c 월(숫자) 1 ~ 12
%d 일(2자리) 01 ~ 31
%e 일(숫자) 1 ~ 31

 


✅ 테이블 컬럼에 적용 예시

SELECT id, DATE_FORMAT(created_at, '%Y/%m/%d') AS formatted_date FROM my_table;

✅ DATE_FORMAT() 기본 구조

DATE_FORMAT(date_column_or_value, '포맷 문자열')
 
-- 예시
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 결과: 2025-03-25

✅ 주요 포맷 코드 정리

포맷 코드설명예시 (2025-03-25 14:08:09 기준)

 

%Y 연도(4자리) 2025
%y 연도(2자리) 25
%m 월(2자리) 03
%c 월(숫자) 3
%d 일(2자리) 25
%e 일(숫자) 25
%H 시간(24시간, 2자리) 14
%h 또는 %I 시간(12시간, 2자리) 02
%i 분(2자리) 08
%s 초(2자리) 09
%p 오전/오후(AM/PM) PM
%W 요일 이름 (전체) Tuesday
%a 요일 이름 (축약) Tue
%M 월 이름 (전체) March
%b 월 이름 (축약) Mar

✅ 실전 예제 모음

📘 예제 1: YYYY-MM-DD

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 결과: 2025-03-25

 

📘 예제 2: YYYY년 MM월 DD일

SELECT DATE_FORMAT(NOW(), '%Y년 %m월 %d일'); -- 결과: 2025년 03월 25일

 

📘 예제 3: YY.MM.DD AM/PM hh:mm

SELECT DATE_FORMAT(NOW(), '%y.%m.%d %p %h:%i'); -- 결과: 25.03.25 PM 02:08
 

✅ 날짜 포맷 응용 예제 (테이블 컬럼 적용)

SELECT id, DATE_FORMAT(created_at, '%Y/%m/%d %H:%i:%s') AS formatted_created_at FROM users;
반응형

댓글