MySQL에서 DATE_FORMAT 사용법: 날짜와 시간 포맷 완전 가이드

1. MySQL 날짜 포맷 학습 전: 기본

데이터베이스에서 날짜 데이터를 관리하는 것은 모든 시스템에서 중요한 역할을 합니다. MySQL에서는 정확한 저장과 적절한 포맷팅이 필수적입니다. 여기서는 날짜가 어떻게 저장되고 표시되는지의 기본을 소개하고, 날짜 출력 포맷팅에 유용한 DATE_FORMAT 함수에 대해 설명합니다.

1.1 MySQL 날짜 유형 및 특징

MySQL은 날짜와 시간을 처리하기 위해 여러 데이터 유형을 제공합니다. 각 유형의 사용 사례를 이해하면 적절한 유형을 선택하고 데이터베이스 성능을 최적화할 수 있습니다.

  • DATE 유형 YYYY-MM-DD 형식으로 날짜를 저장합니다. 단순히 날짜만 필요한 경우(예: 생일이나 행사 날짜)에 적합합니다. 예시: 2024-10-19
  • DATETIME 유형 YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간을 모두 저장합니다 로그나 시간 정보가 필요한 레코드에 유용합니다. 예시: 2024-10-19 15:30:45
  • TIMESTAMP 유형 UNIX 타임스탬프(1970년 1월 1일 이후 초 단위)로 데이터를 저장하며, 서로 다른 시간대를 아우르는 시스템에서 자주 사용됩니다. 현재 타임스탬프는 CURRENT_TIMESTAMP 로 조회할 수 있습니다.

애플리케이션 요구사항에 맞는 날짜 유형을 선택하는 것은 정확성과 쿼리 효율성을 위해 매우 중요합니다.

1.2 저장과 표시의 차이

MySQL이 날짜를 저장할 때는 표준 형식을 사용합니다. 그러나 사용자는 종종 날짜를 더 읽기 쉽거나 현지화된 형태로 표시하길 원합니다. 바로 DATE_FORMAT 함수가 필요한 이유이며, 이 함수를 사용하면 저장된 데이터를 원하는 형식으로 출력할 수 있습니다.

다음 섹션에서는 DATE_FORMAT이 어떻게 동작하는지와 실용적인 사용 방법을 살펴보겠습니다.

2. DATE_FORMAT 함수 기본 사용법

DATE_FORMAT 함수는 저장된 날짜를 원하는 출력 형식으로 포맷팅하는 데 사용됩니다. 유연한 포맷 지정자를 활용하면 다양한 스타일로 날짜를 표시할 수 있습니다.

2.1 DATE_FORMAT 구문

DATE_FORMAT(date, format)
  • date : 포맷팅하려는 날짜 값(DATE, DATETIME, TIMESTAMP 등).
  • format : % 기호와 함께 사용되는 포맷 지정자를 포함한 출력 형식을 지정하는 문자열.

예를 들어, 다음 쿼리는 날짜를 YYYY/MM/DD 형식으로 변환합니다:

SELECT DATE_FORMAT('2024-10-19', '%Y/%m/%d');

Result:

2024/10/19

2.2 일반적인 포맷 지정자

DATE_FORMAT 함수는 날짜와 시간 출력을 맞춤화하기 위한 다양한 포맷 지정자를 지원합니다. 여기 몇 가지 흔히 사용되는 지정자를 소개합니다:

  • %Y : 4자리 연도 (예: 2024)
  • %m : 2자리 월 (01–12)
  • %d : 2자리 일 (01–31)
  • %W : 요일 이름 (예: Saturday)
  • %H : 24시간 형식의 시 (00–23)
  • %i : 분 (00–59)
  • %s : 초 (00–59)

예를 들어, 다음 쿼리는 요일과 연도, 월, 일을 함께 출력합니다:

SELECT DATE_FORMAT('2024-10-19', '%W, %Y-%m-%d');

Result:

Saturday, 2024-10-19

2.3 일본식 포맷 출력

DATE_FORMAT을 사용해 현지화된 출력도 가능합니다. 예를 들어, 다음 쿼리는 날짜를 일본식 YYYY年MM月DD日 형식으로 반환합니다:

SELECT DATE_FORMAT('2024-10-19', '%Y年%m月%d日');

Result:

2024年10月19日

이 포맷은 일본의 보고서, 청구서, 공식 문서 등에 흔히 사용됩니다.

3. 고급 DATE_FORMAT 기법

DATE_FORMAT은 다른 MySQL 함수와 결합될 때 더욱 강력해집니다. 여기서는 날짜 작업을 효율적으로 처리하기 위한 유용한 기법들을 살펴보겠습니다.

3.1 다른 날짜 함수와 결합하기

DATE_FORMAT을 DATE_ADDDATE_SUB 같은 함수와 결합하면 동적인 날짜 계산이 가능합니다.

예시: 날짜에 한 달을 더하고 포맷팅하기
SELECT DATE_FORMAT(DATE_ADD('2024-10-19', INTERVAL 1 MONTH), '%Y-%m-%d');

Result:

2024-11-19

이 방법은 동적 보고서를 생성하거나 날짜 기반 업데이트를 처리할 때 유용합니다.

3.2 STR_TO_DATE와 함께 사용하기

STR_TO_DATE 함수는 문자열을 날짜 유형으로 변환합니다. DATE_FORMAT과 결합하면 문자열을 유효한 날짜 데이터로 파싱한 뒤 원하는 형식으로 포맷팅할 수 있습니다.

예제: 문자열을 날짜로 변환하고 서식을 적용하기
SELECT DATE_FORMAT(STR_TO_DATE('2024年10月19日', '%Y年%c月%e日'), '%Y/%m/%d');

결과:

2024/10/19

이를 통해 복잡한 문자열 기반 날짜를 처리하고 올바르게 서식화할 수 있습니다.

4. 실제 비즈니스 및 시스템 애플리케이션에서 자주 사용되는 날짜 형식

비즈니스 및 시스템 애플리케이션에서 자주 사용되는 날짜 형식을 몇 가지 소개합니다.

4.1 슬래시가 포함된 날짜

SELECT DATE_FORMAT('2024-10-19', '%Y/%m/%d');

결과:

2024/10/19

이 형식은 웹 양식과 사용자 인터페이스에서 널리 사용됩니다.

4.2 ISO 8601 형식

SELECT DATE_FORMAT('2024-10-19', '%Y-%m-%d');

결과:

2024-10-19

ISO 8601은 국제 표준이며 시스템 간 데이터 교환에 이상적입니다.

4.3 요일과 월 이름 표시

SELECT DATE_FORMAT('2024-10-19', '%M %W');

결과:

October Saturday

이는 이벤트 일정 및 달력 보기에서 유용합니다.

5. 결론

DATE_FORMAT 함수는 MySQL에서 유연한 날짜 서식을 위한 강력한 도구입니다. 간단한 서식부터 다른 함수와 결합된 고급 사용 사례까지, 매우 다재다능합니다.

STR_TO_DATE 및 DATE_ADD와 같은 함수를 함께 사용하면 더욱 동적인 데이터 처리를 달성할 수 있습니다. 이 기사에서 다룬 기법을 적용하여 날짜 데이터를 효율적으로 관리하고 시스템 또는 애플리케이션을 최적화하세요.

MySQL의 기능을 계속 활용하여 데이터베이스 작업을 개선하고 더 세련된 시스템을 구축하세요.