MySQL DATE_FORMAT 사용법

오성민·2022년 11월 26일

MySQL

목록 보기
2/6
post-thumbnail

프로그래머스 MySQL lv.1 문제 중 흉부외과 또는 일반외과 의사 목록 출력하기를 풀면서 모르는 것이 나왔다.

제공되는 테이블에 저장된 DATE 형의 format은 yyyy-mm-dd hh:mm:ss 의 형을 가지고 있었다.

하지만 출력할 때에는 yyyy-mm-dd 의 형태를 가지고 출력을 해야하는 주의사항이 있었다.

MySQL을 제대로 공부를 한 것이 아니여서 이렇게 format을 변경하는 걸 알지 못해서 계속 틀려서 의아했다. 이럴 때 사용하는 것이 DATE_FORMAT 함수이다.

DATE_FORMAT()

DATE 형의 format을 변경하거나, DATE 형의 자료에서 원하는 값만을 가져오기를 원할 때에 사용하는 함수이다.

사용법

DATE_FORMAT( { 바꾸기 전의 값 }, { 원하는 형태 혹은 값 } )
위와 같은 방식으로 사용한다.

문제 풀이

이 문제의 조건은 총 2가지였다.

  1. DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
  2. 날짜 포맷은 예시와 동일하게 나와야합니다. <- DATE 형의 형태를 바꿔야한다.

처음에는

SELECT DR_NAME, DR_ID, MCDP_CD, HIRE_YMD
	AS HIRE_YMD FROM doctor WHERE MCDP_CD = "CS" OR
    MCDP_CD = "GS" ORDER BY HIRE_YMD DESC, DR_NAME ASC

위와 같은 방식으로 풀었다.
하지만 2번째 조건을 충족하지 못해서 계속해서 틀렸다.

정답

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") 
	AS HIRE_YMD FROM doctor WHERE MCDP_CD = "CS" OR
    MCDP_CD = "GS" ORDER BY HIRE_YMD DESC, DR_NAME ASC

절대 까먹지 말자.

profile
풀스택을 지향하는 개발자

0개의 댓글