본문 바로가기
DB

[MySQL] DATE_FORMAT() 날짜 변환

by 티끌코딩 2025. 1. 29.
반응형

다양한 날짜 형식 표현을 위한 Mysql DATE_FORMAT() 날짜 변환 활용 가이드

 

데이터베이스를 활용하는 여러 환경에서 날짜나 시간을 가독성 좋게 보여주기 위해서는 일정한 포맷으로 변환하는 과정이 중요하다. 예를 들어, 리포트나 대시보드를 구성할 때는 “2025 05 31같은 형태가 필요하고, 내부 로그 확인 시에는 “2025-05-31 13:00:00”처럼 시··초까지 표시해야 할 수도 있다. 이처럼 다양한 형식이 요구될 때 손쉽게 활용할 수 있는 함수가 Mysql DATE_FORMAT() 날짜 변환이다.


DATE_FORMAT() 함수의 기본 문법

MySQL에서 날짜 혹은 시간을 문자열로 변환할 때 사용하는 함수가 DATE_FORMAT()이다. 기본 문법은 다음과 같다.

DATE_FORMAT(date, format)
  • date: 변환할 날짜(또는 시간) 컬럼이나 값
  • format: 원하는 출력 형식을 정의하는 문자열

포맷 문자열에는 %Y(4자리 연도), %m(2자리 월), %d(2자리 일) 같은 코드들이 들어간다. 이를 조합해 “YYYY-MM-DD”“YYYY MM DD처럼 상황에 따라 다양한 형태를 만들 수 있다.

 

아래 표는 MySQL에서 날짜와 시간을 문자열로 변환할 때 주로 사용되는 포맷 문자를 정리한 예시이다.

포맷 문자 의미 예시
%Y 4자리 연도 2025
%y 2자리 연도 25
%m 2자리 월 (01~12) 01
%c (1~12) 1
%M 월 이름 (영문, January~December) January
%b 월 이름 (영문 약어, Jan~Dec) Jan
%d (01~31) 05
%e (1~31) 5
%H (00~23, 24시간 형식) 09
%h 또는 %I (01~12, 12시간 형식) 01
%i (00~59) 30
%s (00~59) 07
%p AM/PM AM
%W 요일 이름 (영문, Sunday~Saturday) Wednesday
%a 요일 이름 (영문 약어, Sun~Sat) Wed

 

주요 사용 예시

실무에서 자주 쓰이는 대표적인 예시 5가지를 살펴보자. 결과를 함께 표기하니, 원하는 형태를 빠르게 적용하는 데 도움이 될 것이다.

 

  • YYYY-MM-DD
SELECT DATE_FORMAT(주문일자, '%Y-%m-%d') AS formatted_date
FROM orders;
-- 예제 실행 결과: 2025-12-31

 

  • YYYY/MM/DD
SELECT DATE_FORMAT(주문일자, '%Y/%m/%d') AS formatted_date
FROM orders;
-- 예제 실행 결과: 2025/12/31

 

  • YY-MM-DD
SELECT DATE_FORMAT(주문일자, '%y-%m-%d') AS formatted_date
FROM orders;
-- 예제 실행 결과: 25-12-31

 

  • YYYY년 MM월 DD일
SELECT DATE_FORMAT(주문일자, '%Y년 %m월 %d일') AS formatted_date
FROM orders;
-- 예제 실행 결과: 2025년 12월 31일

 

  • 시·분·초 표시
SELECT DATE_FORMAT(주문시간, '%H:%i:%s') AS time_detail
FROM orders;
-- 예제 실행 결과: 13:25:48

 


사용 시 주의사항

  1. 포맷 문자열 정확도ㅂ
    %Y(4
    자리 연도)%y(2자리 연도)를 혼동하지 않도록 주의한다
  2. 데이터 타입 점검
    컬럼이 DATE, DATETIME, TIMESTAMP인지 먼저 확인하는 것이 좋다. 문자열로 된 날짜 정보라면 STR_TO_DATE() 같은 함수를 거쳐야 올바른 결과를 얻을 수 있다.
  3. 타임존 고려
    서버가 UTC를 기준으로 동작한다면, 조회 시점에 원하는 로컬 시간대와 차이가 있을 수 있다. 필요한 경우 SET time_zone 구문으로 맞춰서 사용한다.
  4. 성능 이슈
    WHERE
    절에서 변환 함수를 직접 적용하면 인덱스를 사용할 수 없어 쿼리 성능이 떨어질 수 있다. 대규모 로그 테이블에서 INDEX를 활용하지 못해 조회 속도가 급격히 느려진 경험이 있었다.
  5. NULL 처리
    NULL
    값을 가진 날짜 컬럼에 변환 함수를 적용하면 결과도 NULL이 되므로, 데이터의 무결성을 미리 확인하는 편이 안전하다.

마무리

Mysql DATE_FORMAT() 날짜 변환을 활용하면 다양한 형식으로 날짜와 시간을 손쉽게 가공할 수 있다. 보고서·로그·관리도구 등 어느 환경에서든 가독성 높은 정보를 제공하기 위해 필수적으로 익혀두는 것이 좋다. , 작업할 때마다 포맷 코드를 일일이 찾지 않도록 미리 정리해두면 훨씬 효율적인 개발이 가능하다.

 

 

 

반응형