반응형
반응형
문제설명
다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사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;
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
| SELECT > FrontEnd 개발자 찾기 / 비트연산자 (0) | 2025.03.26 |
|---|---|
| SELECT > 재구매가 일어난 상품과 회원 리스트 구하기 / SQL HAVING절 예제 (0) | 2025.03.25 |
| SELECT > 서울에 위치한 식당 목록 출력하기 / MySQL 소수점 관련 주요 함수 (0) | 2025.03.25 |
| [프로그래머스] String, Date 〉Lv2. DATETIME에서 DATE로 형 변환 (0) | 2021.10.29 |
| [프로그래머스] String, Date 〉Lv3. 오랜 기간 보호한 동물(2) (0) | 2021.10.28 |
댓글