< 문제 >
https://school.programmers.co.kr/learn/courses/30/lessons/131120
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
< FAIL >
SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;
MEMBER_ID | MEMBER_NAME | GENDER | DATE_OF_BIRTH |
seoyeons@naver.com | 박서연 | W | 1992-03-16 00:00:00 |
DATE_OF_BIRTH 칼럼 값에 시간 값이 더해져 추출된 것이 문제라고 생각되어 해당 부분이 출력되지 않도록 수정하였습니다.
< PASS >
SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d')DATEONLY FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;
위의 코드로 해당 문제를 PASS 하였습니다. 하지만 개선 사항이 존재하는데요, 바로 DATEONLY 부분입니다. 처음에는 이또한 문법의 일부 즉, 함수라고 생각하였는데, 단순 별칭이었습니다. 그래서 아래와 같이 AS를 붙여 출력시 보이는 칼럼이 DATE_OF_BIRTH 가 되도록 작성해 줍니다.
SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d') AS DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;
WHERE TLNO IS NOT NULL
IS NOT NULL 구문을 사용해 줄 수있습니다.
CHAT GPT에 질의한 바로는..
- TLNO NOT IN('NULL'): 이 구문은 TLNO 칼럼의 값이 문자열 'NULL'과 일치하지 않는 레코드를 필터링합니다. 실제 NULL 값과는 관련이 없습니다.
- TLNO IS NOT NULL: 이 구문은 TLNO 컬럼에 실제 NULL 값이 없는 레코드를 필터링합니다. 이 구문은 NULL 값을 확인하는 데 사용되며, 해당 상황에 더 적합한 문법입니다.
< 참고 >
https://marketinga.tistory.com/13
[SQL] 날짜와 관련된 데이터추출(YEAR,MONTH,DAYOFMONTH)
날짜에 관한 데이터 추출을 알아보겠습니다. 1. 연도 추출 (YEAR) SELECT * FROM (데이터베이스/테이블) WHERE YEAR(컬럼명) = "2021" SELECT * FROM test.please2 WHERE YEAR(orderdate) = '2021' ㄴ test 데이터 베이스의 please
marketinga.tistory.com
https://chobokkiri.tistory.com/49
[MySQL][TIP] datetime 필드에서 날짜 혹은 시간만 SELECT하기
datetime 필드에서 날짜 혹은 시간만 SELECT 하려면 다음과 같이 하면 된다. SELECT DATE_FORMAT("2016-04-08 11:12:14", '%Y-%m-%d') DATEONLY, DATE_FORMAT("2016-04-08 11:12:14",'%H:%i:%s') TIMEONLY
chobokkiri.tistory.com
https://ponyozzang.tistory.com/656
MySQL 날짜 변환 DATE_FORMAT 함수 사용 방법
DATE_FORMAT 함수를 사용하면 날짜를 지정한 포맷으로 변경할 수 있습니다. 날짜 포맷을 변경하는 이유는 SELECT로 데이터를 검색하는 경우 조건 대상이 date 타입의 컬럼이라면 날짜 포맷을 일치시켜
ponyozzang.tistory.com