프로그래머스 MySQL lv.1 문제 중 흉부외과 또는 일반외과 의사 목록 출력하기를 풀면서 모르는 것이 나왔다.
제공되는 테이블에 저장된 DATE 형의 format은 yyyy-mm-dd hh:mm:ss 의 형을 가지고 있었다.
하지만 출력할 때에는 yyyy-mm-dd 의 형태를 가지고 출력을 해야하는 주의사항이 있었다.
MySQL을 제대로 공부를 한 것이 아니여서 이렇게 format을 변경하는 걸 알지 못해서 계속 틀려서 의아했다. 이럴 때 사용하는 것이 DATE_FORMAT 함수이다.
DATE 형의 format을 변경하거나, DATE 형의 자료에서 원하는 값만을 가져오기를 원할 때에 사용하는 함수이다.
DATE_FORMAT( { 바꾸기 전의 값 }, { 원하는 형태 혹은 값 } )
위와 같은 방식으로 사용한다.
이 문제의 조건은 총 2가지였다.
- DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
- 날짜 포맷은 예시와 동일하게 나와야합니다. <- 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
절대 까먹지 말자.