빅데이터 및 DB/MySQL

[MySQL] date_format 설정 (날짜 포맷 변경)

Steve Jang 2022. 4. 24. 23:43

MySQL에서는 date_format으로 날짜값을 문자열로 변경하는 포맷을 지원해 준다. 아마 DBMS로 개발을 하는 웹개발자라면 한번씩은 꼭 써보게 되는 기능일텐데, 오늘은 date_format의 포맷 설정값들과 예시에 대해서 포스팅을 해보도록 한다.

 

[MySQL] date_format 설정 (날짜 포맷 변경)


포맷 설명

포맷설정 포맷 설명
%a 영문 약칭 요일 (Sun to Sat)
%b 영문 약칭 월 (Jan to Dec)
%c 숫자로 표현하는 월 (0 to 12)
%D 숫자 값으로 표시된 일, 뒤에 접미사가 붙음 (1st, 2nd, 3rd, ...)
%d 숫자 값으로 표시된 일 (01 to 31)
%e 숫자 값으로 표시된 일 (0 to 31)
%f 마이크로초 (000000 to 999999)
%H 시간 (00 to 23)
%h 시간 (00 to 12)
%I 시간 (00 to 12)
%i 분 (00 to 59)
%j 년중 일 (001 to 366)
%k 시간 (0 to 23)
%l 시간 (1 to 12)
%M 영문 월 (January to December)
%m 숫자 값으로 표시된 월 (00 to 12)
%p AM or PM
%r AM이나 PM 포맷의 시간 형식 (hh:mm:ss AM/PM)
%S 초 (00 to 59)
%s 초 (00 to 59)
%T 24시간 포맷의 시간 (hh:mm:ss)
%U 일요일을 첫째주로 하는 주 (00 to 53)
%u 월요일을 첫째주로 하는 주 (00 to 53)
%V 일요일을 첫째주로 하는 주 (01 to 53). %X와 함께 사용
%v 월요일을 첫째주로 하는 주 (01 to 53). %x와 함께 사용
%W 요일 영문명 (Sunday to Saturday)
%w 요일 where Sunday=0 and Saturday=6
%X 한 주의 첫 번째 요일이 일요일인 주의 연도. %V와 함께 사용
%x 한 주의 첫 번째 요일이 월요일인 주의 연도. %v와 함께 사용
%Y 4자리 형태의 년
%y 2자리 형태의 년

 

수많은 포맷이 있지만 사실 우리가 사용할만한 것은 극히 일부로 정해져 있으니 고민할 필요는 없다.

 

 

대표적인 date_format 예시

월을 영어로

 

SELECT DATE_FORMAT(now(), "%M %d %Y");

# April 24 2022

 

년월일을 숫자로

SELECT DATE_FORMAT(now(), "%Y%m%d");

# 20220424

 

년월일시분초 숫자로

SELECT DATE_FORMAT(now(), "%Y%m%d%H%i%s");

# 20220424232617

 

년월일시분초를 숫자로 변경해서 쓰는 경우가 상당히 많다. 이렇게 변경할 경우 날짜값을 long 형으로 변경이 가능하여 데이터를 처리하는데 속도면에서 유리해질 수 있기 때문이다. 그리고 숫자로 변경하더라도 다시 값을 분해할 때 손실이 되지 않는다.

 

2022년 4월 24일

SELECT DATE_FORMAT(now(), "%Y년 %c월 %e일");

# 2022년 4월 24일

 

날짜값에 년, 월, 일과 같이 의존 명사를 붙일 경우 2022년 04월 24일과 같은 식보다는 2022년 4월 24일과 같은 것이 더 자연스러울 것이다. 그래서 월의 경우 %m 대신 %c를 사용하고 마찬가지로 일도 %d 대신 %e를 사용하였다.