Language/SQL

[MYSQL] DATE_FORMAT을 이용한 날짜 형식 변환하기

멱군 2021. 2. 9. 13:49

데이터베이스에서 날짜와 시간 관련 정보를 다룰 때, 원하는 형식으로 날짜를 출력하거나 변환하는 작업은 필수적입니다. MYSQL에서는 DATE_FORMAT 함수를 사용하여 날짜와 시간을 다양한 형식으로 쉽게 변환할 수 있습니다. 이번 글에서는 DATE_FORMAT의 활용 방법과 다양한 형식 옵션에 대해 알아보겠습니다.

 

1. 기본 날짜 형식

MYSQL에서 날짜를 지정하는 기본 형식은 'YYYY-MM-DD HH:MM:SS'입니다.

예를 들어, '2021-02-08 00:00:00'과 같이 표현됩니다.

 

2. 오늘 날짜와 시간 얻기

  • now()
    • 현재의 날짜와 시간을 반환합니다.
  • CURDATE()
    • 현재의 날짜만 반환합니다.
  • CURTIME()
    • 현재의 시간만 반환합니다.

 

3. DATE_FORMAT을 이용한 날짜 형식 변환

  • DATE_FORMAT(now(), '%Y-%m-%d')
    • 현재 날짜를 'YYYY-MM-DD' 형식으로 변환합니다.
    • 결과: 2021-02-08
  • DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s')
    • 현재 날짜와 시간을 'YYYY-MM-DD HH:MM:SS' 형식으로 변환합니다.
    • 결과: 2021-02-08 19:31:08
  • DATE_FORMAT(now(), '%Y-%m-%d 00:00:00')
    • 현재 날짜에 특정 시간을 지정하여 출력합니다.
    • 결과: 2021-02-08 00:00:00

 

4. 다양한 날짜 형식 옵션

DATE_FORMAT 함수는 다양한 형식 옵션을 제공합니다. `%Y`는 연도, `%m`은 월, `%d`는 일, `%H`는 24시간 형식의 시간, `%i`는 분, `%s`는 초를 나타냅니다. 이 외에도 다양한 옵션을 조합하여 원하는 형식으로 날짜와 시간을 출력할 수 있습니다.

명칭 출력문자 출력설명
%Y 4자리 연도
%y 2자리 연도
%m 2자리 월 (01-12)
%c 1자리 월 (1-12)
%M 영어 이름(January, February…)
%b 영어 줄인 이름(Jan, Feb…)
%d 2자리 일 (01-31)
%e 1자리 일 (1-31)
%D 1st, 2nd, 3th, 4th, ...
%H 두자리 24시간 (00-23)
%h 두자리 12시간 (01-12)
%I (대문자 i ) 두자리 12시간 (01-12) 
%k 한자리 24시간 (0-23)
%l (소문자 L) 한자리 12시간 (1-12)
%i 2자리 (00-59)
%S / %s 2자리 (00-59)
마이크로초 %f 100만분의1초 인데 나오지 않는듯
오전/오후 %p AM/PM
시분초 %T 24시간 형식 (hh:mm:ss)
시분초 오전/오후 %r 12시간 형식 (hh:mm:ss AM/PM)
n일째 %j 그해의 몇번째 일인지 표시 (001-366)
n일째 %w 그주의 몇번째 일인지 표시 (0=일요일, 6=토요일)
%W 요일 이름(Monday,Tuesday…)
%a 요일 줄인 이름(Mon,Tue…) 
주 수 %U 그해의 몇번째 주인지 표시 (00-54) 일요일이 주의 첫번째일
주 수 %u 그해의 몇번째 주인지 표시 (01-54) 월요일이 주의 첫번째일
연 / 주 %X / %V 그주가 시작된 해와 몇번째 주인지 출력,
일요일이 주의 첫번째일 %X 와 함께사용
ex> 2020년 1월 1일(수) : 2019년의52번째 주 2019/52
연 / 주 %x / %v 그주가 시작된 해와 몇번째 주인지 출력 (01-53)
월요일이 주의 첫번째일 %x 와 함께사용
ex> 2020년 1월 1일(수) : 2020년의01번째 주 2020/01

 

 

결론

MYSQL의 DATE_FORMAT 함수를 활용하면, 다양한 요구사항에 맞게 날짜와 시간 정보를 효율적으로 변환할 수 있습니다. 이를 통해 데이터베이스에서 날짜와 시간 관련 작업을 보다 유연하게 처리할 수 있습니다.