프로그래머스 LV 2. 131120 3월에 태어난 여성 회원 목록 출력하기 C++

https://school.programmers.co.kr/learn/courses/30/lessons/131120

 

 

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH)=3 AND GENDER='W' AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;

 

 

+++++++

위의 답을 찾아가는 여정에 대하여

+++++++

 

SELECT MEMBER_ID,
    MEMBER_NAME,
    GENDER,
    DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = 3
      AND TLNO IS NOT NULL
      AND GENDER = 'W'
ORDER BY MEMBER_ID;

처음에 위와 같이 작성해서 제출해보니, 

 

위와 같이 생일이 딱 요일까지만 나오는것이 아니라 시간이 껴들어가서 문제에서 요구하는 형태가 아니었음. 

 

그래서 이 문제의 경우 GPT에 방안을 요구해서 DATE_FORMAT() 이라는 것을 알게 되어서, 

DATE_FORMAT(DATE_OF_BIRTH, '%Y-%M-%D') AS FORMATTED_DATE

위와같이 변형해서 제출했음. 그랬더니 결과는 

이와 같이 나옴 

내가 원하는 형태의 포맷은 아니었으나, 이렇게 변하는걸 보니까 매우 재미있었음. 

 

이번에는

DATE_FORMAT(DATE_OF_BIRTH, '%Y-%c-%e') AS FORMATTED_DATE

을 알게 되어서 위와같이 변경해서 제출했더니, 

이와 같은 결과가 나왔다. 

드디어 맞았구나 하고 제출했더니 틀림

자세히 보니까 1992-03-16 형태로 나와야 하는데 -3- 형태로 나와서 틀렸다는걸 알게됨. 

 

더는 잘 모르겠어서 다른 풀이를 찾아보니, 

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH)=3 AND GENDER='W' AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;

 을 발견함. 

뭐가 다른가 보니까, 나의 경우 '%Y-%M-%D' 형태로 작성해서 대문자 M에 의해서 영어로, 대문자 D에 의해서 16th로 나왔음. 해보니까 이거 은근 재미있다. 하나하나에 따라서 내가 얻게되는 값의 포맷이 변하네.

 

DATE_FORMAT() 의 경우 대문자 소문자를 구분하면서, 각 대문자 소문자에 따라서 형태가 달라짐을 유의하도록 하자. 

재미있었다. 

 

  Comments,     Trackbacks