1. 소개
MySQL 데이터베이스에서 날짜와 시간 데이터를 자주 다루게 됩니다. 데이터베이스에 저장된 날짜는 표준 형식으로 저장되지만, 사용자에게 표시할 때는 가독성을 높이기 위해 재포맷팅하는 경우가 많습니다. 이때 DATE_FORMAT 함수가 유용합니다. 이 기사에서는 DATE_FORMAT 함수의 사용법과 다양한 포맷팅 옵션을 소개하고, 실제 예제를 통해 적용하는 실용적인 방법을 설명하겠습니다.
2. DATE_FORMAT 함수 개요
2.1 DATE_FORMAT 함수란 무엇인가?
DATE_FORMAT 함수는 날짜 데이터를 지정된 형식으로 변환하는 MySQL 함수입니다. 기본 YYYY-MM-DD 형식이나 표준 날짜시간 형식 대신 임의의 형식으로 날짜를 출력하고자 할 때 사용됩니다. 예를 들어, 사용자에게 “Sep 16, 2024”와 같은 형식으로 날짜를 표시하고 싶을 때 이 함수가 매우 도움이 됩니다.
2.2 기본 구문
DATE_FORMAT 함수의 기본 구문은 다음과 같습니다.
DATE_FORMAT(date, format)
date: 포맷팅할 날짜 데이터.format: 출력 날짜 형식을 지정하는 문자열.
구체적인 예를 살펴보겠습니다:
SELECT DATE_FORMAT('2024-09-16', '%Y-%m-%d') AS formatted_date;
이 쿼리는 ‘2024-09-16’ 날짜를 “2024-09-16” 형식으로 변환하여 출력합니다.

3. 날짜 형식 매개변수
3.1 형식 지정자 목록
DATE_FORMAT 함수는 많은 형식 지정자를 지원합니다. 아래는 자주 사용되는 목록입니다:
%Y: 4자리 연도 (예: 2024)%y: 2자리 연도 (예: 24)%m: 2자리 월 (01 ~ 12)%c: 월 (1 ~ 12)%d: 2자리 일 (01 ~ 31)%e: 일 (1 ~ 31)%H: 24시간 형식 시 (00 ~ 23)%h또는%I: 12시간 형식 시 (01 ~ 12)%i: 분 (00 ~ 59)%s: 초 (00 ~ 59)%p: 오전(AM) 또는 오후(PM)
3.2 실제 예제
이러한 지정자들이 출력에 미치는 영향을 구체적인 예제로 확인해 보겠습니다.
SELECT
DATE_FORMAT('2024-09-16 14:35:59', '%Y-%m-%d %H:%i:%s') AS full_format,
DATE_FORMAT('2024-09-16 14:35:59', '%b %d, %Y') AS us_format,
DATE_FORMAT('2024-09-16 14:35:59', '%d/%m/%Y') AS european_format,
DATE_FORMAT('2024-09-16 14:35:59', '%h:%i %p') AS twelve_hour_format;
이 쿼리의 출력은 다음과 같습니다:
full_format: 2024-09-16 14:35:59us_format: Sep 16, 2024european_format: 16/09/2024twelve_hour_format: 02:35 PM
4. 실용적인 사용 사례
4.1 시나리오 1: 보고서 생성
예를 들어, 회사에서 월별 보고서를 생성할 때 날짜를 “YYYY-MM” 스타일 형식으로 표시하고 싶을 수 있습니다. 다음 쿼리는 그 목적으로 보고서 날짜를 포맷팅합니다.
SELECT
DATE_FORMAT(sale_date, '%Y-%m') AS report_month,
SUM(sales) AS total_sales
FROM sales_data
GROUP BY report_month;
이 쿼리는 판매 데이터에서 월별 총 매출을 “2024-09”와 같은 형식으로 출력합니다.
4.2 시나리오 2: 사용자 인터페이스
웹 애플리케이션에서 사용자에게 날짜를 명확하게 표시하고 싶을 때 DATE_FORMAT이 유용합니다. 예를 들어, 사용자 프로필 페이지에서 마지막 로그인 날짜를 표시할 때 다음과 같이 사용할 수 있습니다.
SELECT
user_name,
DATE_FORMAT(last_login, '%Y-%m-%d %H:%i') AS last_login_formatted
FROM users;
이것은 사용자의 마지막 로그인 날짜와 시간을 “2024-09-16 14:35”와 같이 표시합니다.
4.3 시나리오 3: 쿼리 최적화
일부 경우에 DATE_FORMAT은 데이터베이스 쿼리 최적화에도 유용할 수 있습니다. 예를 들어, 특정 날짜 범위 내의 데이터를 추출할 때 포맷팅을 사용할 수 있습니다.
SELECT
*
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';
이 쿼리는 2024년 9월에 발생한 모든 거래를 추출합니다.
5. DATE_FORMAT에 대한 주의사항 및 모범 사례
5.1 성능 고려사항
DATE_FORMAT을 자주 사용하면 성능에 영향을 미칠 수 있습니다. 특히 대규모 데이터셋에 반복적으로 적용하면 처리 시간이 증가할 수 있습니다. 필요하다면 미리 포맷된 날짜를 저장하거나 애플리케이션 수준에서 포맷팅하는 것을 고려하세요.
5.2 로컬라이제이션
DATE_FORMAT을 사용하여 다국어 시스템을 구축할 때 로컬라이제이션에 주의해야 합니다. 날짜 표시 형식은 국가와 지역에 따라 다르기 때문에 사용자의 로케일에 따라 형식을 동적으로 변경해야 할 수 있습니다.
5.3 일관된 포맷팅
전체 시스템에서 일관된 날짜 형식을 사용하는 것은 사용자 경험을 향상시키는 데 필수적입니다. 예를 들어, 입력 양식, 표시 섹션, 보고서에서 동일한 형식을 사용함으로써 사용자를 혼란스럽게 하는 것을 피할 수 있습니다.
6. 요약
DATE_FORMAT 함수는 MySQL에서 날짜 데이터를 유연하게 포맷팅하는 강력한 도구입니다. 이 기사에서는 기본 사용법, 실용적인 예제, 중요한 주의사항 및 모범 사례를 다루었습니다. 이 함수를 효과적으로 사용함으로써 날짜를 더 명확하고 사용자 친화적으로 표시할 수 있습니다. 다음 단계로 더 고급 날짜 및 시간 작업을 배우는 것을 추천합니다.
7. 참고 자료
- MySQL Official Documentation: DATE_FORMAT
- 관련 기사와 튜토리얼이 정기적으로 업데이트되므로 공식 문서와 기술 블로그를 정기적으로 확인하세요.
이 기사가 DATE_FORMAT 함수를 이해하고 효과적으로 사용하는 데 도움이 되기를 바랍니다.


