데이터분석/SQL

[SQL] DATETIME에서 DATE로 형 변환 | DATE() 함수 사용법 (프로그래머스)

dataminutestone 2026. 7. 3. 11:54

문제

프로그래머스 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로 형 변환