TIL #17 MySQL의 DATE_FORMAT()

HYEON JIN CHOI·2024년 5월 14일

1. 기본 개념

MySQL 을 사용하다보면 DATE, DATETIME 등의 타입을 사용하게 된다.
해당 타입을 그대로 사용할 수도 있지만, 대부분의 경우 데이터를 원하는 형태로 가공하여 사용하게 된다.
이 때 사용할 수 있는 함수가 DATE_FORMAT() 이다.

DATE_FORMAT() 함수는 날짜와 시간을 다양한 형식으로 출력할 수 있도록 도와준다.
MySQL에서 날짜 및 시간 데이터를 나룰 때, 가독성을 높이거나 특정 형식으로 변환해야 할 때
유용하다.

2. 사용법

2.1. 기본 문법

기본 문법은 다음과 같다.
DATE_FORMAT(date, format)

  • date 매개변수는 필수로 채워져야하는 값으로, 출력하고 싶은 날짜와 시간 값을 의미한다.

  • format 매개변수 또한 필수이며, 서식 문자를 통해 원하는 형식을 지정할 수 있다.

2.2. 서식 문자

포맷설명
%a요일 축약형 (Sun-Sat)
%b월 축약형 (Jan-Dec)
%c월 (1-12)
%D일 축약형 (1st, 2nd, 3rd, ...)
%d두 자리 일 (01-31)
%e일 (1-31)
%f마이크로초 (000000-999999)
%H두 자리 시간 (00-23)
%h두 자리 시간 (01-12)
%I두 자리 시간 (01-12)
%i두 자리 분 (00-59)
%j연중 일 (001-366)
%k시간 (0-23)
%l시간 (1-12)
%M월 이름 (January-December)
%m두 자리 월 (01-12)
%pAM 또는 PM
%r시간, AM 또는 PM 표시 (hh:mm:ss AM/PM)
%S두 자리 초 (00-59)
%s두 자리 초 (00-59)
%T시간 (hh:mm:ss)
%U주 (00-53) 일요일 시작
%u주 (00-53) 월요일 시작
%VISO 주 (01-53) 월요일 시작
%vISO 주 (01-53) 월요일 시작
%W요일 이름 (Sunday-Saturday)
%w요일 (0=Sunday, 6=Saturday)
%X주의 연도 (4자리) 일요일 시작
%x주의 연도 (4자리) 월요일 시작
%Y네 자리 연도 (예: 2024)
%y두 자리 연도 (예: 24)

출처 : MySQL Date_Format

2.3. 사용 예시

SELECT DATE_FORMAT('2024-05-14 14:35:22', '%r') AS DATE;

위 예시에서는 주어진 date 값을 "02:35:22 PM" 형식으로 출력한다.


SELECT DATE_FORMAT('2024-05-14 14:35:22', '%W, %M %e, %Y') AS DATE;

위 예시에서는 주어진 date 값을 "Saturday, May 14, 2024" 형식으로 출력한다.

3. 참고

2.3. 사용예시에서는 하나의 값을 다뤘지만, 다수의 값을 출력하는 경우가 많다.
또한 정렬을 통해 날짜순 또는 시간순으로 나열하여 출력해야 할 때도 있다.
하지만 DATE_FORMAT() 을 통해 출력된 값들은 문자열로 변환된 값들이기 때문에,
예를 들어 '17'과 '2'를 오름차순으로 정렬하게 되면 '17'이 앞서게 된다.

이를 해결하기 위해서는 숫자 형식으로 시간을 정렬하는 것이 좋다.
이와 관련된 함수로는 다음과 같은 것이 있다.

YEAR(date) : 네 자리 연도 (1000-9999)
MONTH(date) : 월 (1-12)
WEEK(date) : 주 (0-52) 일요일 시작
HOUR(date) : 시간 (0-23)
MINUTE(date) : 분 (0-59)
SECOND(date) : 초 (0-59)

출처 : MySQL Date and Time Functions

4. 회고

스프링 프레임워크를 사용하여 웹사이트를 개발하는 과정에서 데이터베이스와의 상호작용은 필수적이다.
특히 날짜와 시간 데이터를 효율적으로 처리하는 것은 매우 중요하기 때문에 반드시 숙지해야 한다.

0개의 댓글