DB

[MySQL] 날짜 → 문자열 변환: DATE_FORMAT 응용하기 🗓️

인생아 2025. 7. 25. 14:35
반응형

MySQL에서 날짜를 가독성 좋은 문자열로 출력해야 하는 경우가 많다. 보고용, 프론트 전달용, 로그 출력용, 또는 사용자에게 보여주는 UI 처리 등 날짜를 다양한 포맷의 문자열로 바꾸는 작업은 실무에서 필수적이다.

이럴 때 사용하는 함수가 바로 DATE_FORMAT() 함수다. 이 함수는 날짜를 원하는 형식의 문자열로 자유롭게 변환할 수 있다.

DATE_FORMAT 문법

DATE_FORMAT(날짜값, '포맷문자열')
  • 첫 번째 인자: DATE, DATETIME, TIMESTAMP 값
  • 두 번째 인자: 출력할 문자열 형식(포맷 코드 조합)

자주 사용하는 포맷 코드

코드 의미 예시 값
%Y 4자리 연도 2025
%y 2자리 연도 25
%m 2자리 월 07
%c 월(숫자, 1~12) 7
%d 2자리 일 09
%e 일(숫자, 1~31) 9
%H 시(00~23) 14
%i 35
%s 59
%W 요일 이름 Wednesday
%a 요일 약자 Wed
%b 월 이름 약자 Jul
%M 월 전체 이름 July
반응형

예제 1: 날짜를 YYYY-MM-DD 형식으로

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS 오늘날짜;
-- 결과: 2025-07-23

예제 2: 날짜 + 시간 문자열로 변환

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS 전체포맷;
-- 결과: 2025-07-23 15:47:21

예제 3: 한국식 날짜 포맷으로 출력

SELECT DATE_FORMAT(NOW(), '%Y년 %m월 %d일') AS 한국형날짜;
-- 결과: 2025년 07월 23일

예제 4: 요일 이름 포함 포맷

SELECT DATE_FORMAT('2025-07-23', '%Y-%m-%d (%W)') AS 요일포함;
-- 결과: 2025-07-23 (Wednesday)

예제 5: 블로그/게시판 날짜 포맷 만들기

SELECT DATE_FORMAT(NOW(), '%y.%m.%d %H:%i') AS 게시판용;
-- 결과: 25.07.23 15:47
반응형

실무 활용 팁

  • UI/프론트 전달용 날짜 포맷은 DATE_FORMAT()으로 가공 후 전달하면 프론트 처리 부담 감소
  • 로그 포맷이나 데이터 내보내기(EXPORT) 시 CSV 내 날짜 문자열 출력 가능
  • %Y-%m 같은 월 단위 포맷으로 월별 통계 키 생성에 활용 가능
SELECT DATE_FORMAT(order_date, '%Y-%m') AS 월별,
       COUNT(*) AS 주문수
FROM orders
GROUP BY 월별;

STR_TO_DATE와 비교

목적 함수명
문자열 → 날짜 STR_TO_DATE()
날짜 → 문자열 DATE_FORMAT()

이 둘은 쌍을 이루는 반대 동작의 함수로, 함께 자주 사용된다.

정리

  • DATE_FORMAT()은 날짜를 원하는 형태의 문자열로 가공하는 데 특화된 함수이다.
  • 다양한 포맷 코드 조합으로 한국식, 미국식, 시간 포함 등 자유롭게 표현 가능하다.
  • 실무에서 UI, 로그, 통계, 리포트 등 다양한 곳에 폭넓게 활용된다.

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

 

반응형