문제
프로그래머스 DATETIME에서 DATE로 형 변환 문제이다.
이번 문제는 어렵지는 않았지만 DATETIME에서 날짜만 출력하는 방법을 알고 있는지를 묻는 문제였다.
문제 조건
조회해야 하는 컬럼은 다음과 같다.
- 동물 ID (ANIMAL_ID)
- 이름 (NAME)
- 들어온 날짜
- 아이디(ANIMAL_ID) 기준 오름차순 정렬
여기서 중요한 점은 날짜만 출력해야 한다는 것이다.
예를 들어,
2018-01-22 14:32:00
이 아니라
2018-01-22
형태로 출력해야 한다.
처음 작성한 코드
처음에는 컬럼 이름만 바꿔주면 되는 줄 알고 아래와 같이 작성했다.
SELECT ANIMAL_ID, NAME, DATETIME AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
하지만 이렇게 작성하면 컬럼명만 날짜로 변경될 뿐,
2018-01-22 14:32:00
처럼 시·분·초까지 그대로 출력된다.
AS는 컬럼명을 변경하는 역할이지 데이터 형식을 바꾸는 것이 아니라는 점을 다시 확인했다.
해결 방법
MySQL에서는 DATE() 함수를 사용하면 DATETIME에서 날짜만 추출할 수 있다.
SELECT
ANIMAL_ID,
NAME,
DATE(DATETIME) AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
실행하면 다음과 같이 출력된다.
ANIMAL_IDNAME날짜
| A349996 | Sugar | 2018-01-22 |
| A350276 | Jewel | 2017-08-13 |
| A350375 | Meo | 2017-03-06 |
DATE() 함수
DATE() 함수는 DATETIME 또는 TIMESTAMP 값에서 날짜(YYYY-MM-DD)만 반환한다.
예를 들어,
SELECT DATE(DATETIME)
FROM ANIMAL_INS;
결과는
2018-01-22
2017-08-13
2017-03-06
처럼 날짜만 출력된다.
이번 문제에서 배운 점
이번 문제를 풀면서 다시 한번 정리하게 된 내용은 다음과 같다.
- AS는 컬럼 이름만 변경한다.
- DATE()는 DATETIME에서 날짜만 추출한다.
- 날짜 형식을 변경해야 하는 문제에서는 DATE() 함수를 활용하면 된다.
단순한 문제였지만 AS와 DATE()의 역할 차이를 확실히 구분할 수 있었던 문제였다.
출처
- 프로그래머스 SQL 고득점 Kit - DATETIME에서 DATE로 형 변환
'데이터분석 > SQL' 카테고리의 다른 글
| [SQL] NULL 처리하기 (IFNULL 사용법) | 프로그래머스 NULL 처리하기 (0) | 2026.07.03 |
|---|---|
| [SQL] 이름에 el이 들어가는 동물 찾기 (LIKE, AND, ORDER BY) (0) | 2026.07.03 |
| [SQL] 프로그래머스 GROUP BY - 동명 동물 수 찾기 (GROUP BY, HAVING, ORDER BY) (0) | 2026.07.03 |
| [SQL] 프로그래머스 최솟값 구하기 | ORDER BY와 LIMIT 사용하기 (0) | 2026.07.02 |
| [SQL] 역순 정렬하기 (ORDER BY DESC) | 프로그래머스 SQL 입문 (0) | 2026.07.02 |