반응형
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
반응형
'DB' 카테고리의 다른 글
| [MySQL] AES_ENCRYPT, AES_DECRYPT로 대칭키 암호화 🔐 (0) | 2025.07.25 |
|---|---|
| [MySQL] MD5와 SHA 해시 함수 비교와 실전 활용 (1) | 2025.07.25 |
| [MySQL] PASSWORD와 OLD_PASSWORD 함수 완전 해부 (0) | 2025.07.25 |
| [MySQL] 숫자, 날짜, 문자형 자유 변환 꿀팁 모음 (3) | 2025.07.25 |
| [MySQL] 문자열 → 날짜 변환: STR_TO_DATE 실전 예제 📆 (1) | 2025.07.25 |
| [MySQL] CONVERT 함수와 CAST 차이점 비교 (0) | 2025.07.25 |
| [MySQL] CAST 함수로 데이터 형 변환하기 (0) | 2025.07.25 |
| [MySQL] CASE WHEN으로 다중 조건 처리하기 (1) | 2025.07.25 |