본문 바로가기
데이터/SQL

[MySQL] 날짜 형식/포맷 변환 함수- DATE_FORMAT

by 찌노오 2022. 10. 20.

 

DATE_FORMAT 함수

MySQL에서 시간,날짜를 원하는 형태로 표기 방식을 바꿔주는 함수

함수의 구성은 DATE_FORMAT(date,format) 이며, 문자열 date에 값의 형식을 format으로 지정한다.

아래 표에 표시된 지정자를 format문자열에 사용할 수 있다,

 

가장 많이 쓰는 형태 중 하나인 yyyy-mm-dd 라면, 다음과 같다.

(여기서 ins_date라는 날짜/시간형태(yyyy-mm-dd hh:mm:ss인 column)

DATE_FORMAT(ins_date, '%Y-%m-%d')

 

SpecifierDescription

지정자 설명 부연
%a Abbreviated weekday name (Sun..Sat)  
%b Abbreviated month name (Jan..Dec)  
%c Month, numeric (0..12)  
%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)  
%d Day of the month, numeric (00..31)  
%e Day of the month, numeric (0..31)  
%f Microseconds (000000..999999)  
%H Hour (00..23)  
%h Hour (01..12)  
%I Hour (01..12)  
%i Minutes, numeric (00..59)  
%j Day of year (001..366)  
%k Hour (0..23) 24시간제
%l Hour (1..12) 12시간제
%M Month name (January..December) 월 이름(name)
%m Month, numeric (00..12) 월, 숫자(numeric)
%p AM or PM  
%r Time, 12-hour (hh:mm:ss followed by AM or PM) 12시간제, AM/PM
%S Seconds (00..59)  
%s Seconds (00..59)  
%T Time, 24-hour (hh:mm:ss) 24시간제
%U Week (00..53), where Sunday is the first day of the week; WEEK() mode 0 주 표시(일요일 첫번째)
%u Week (00..53), where Monday is the first day of the week; WEEK() mode 1 주 표시(월요일 첫번째)
%V Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X 주 표시(일요일 첫번째,01~)
%v Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x 주 표시(월요일 첫번째,01~)
%W Weekday name (Sunday..Saturday)  
%w Day of the week (0=Sunday..6=Saturday)  
%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V  
%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v  
%Y Year, numeric, four digits 4자리 연도표기
%y Year, numeric (two digits) 2자리 연도표기
%% A literal % character %를 입력
%x x, for any x not listed above  

출처: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

 

DATE_FORMAT 함수의 활용

데이터를 집계하거나, 다른 함수와의 결합할때 쓴다.

예를 들면 시간이나 날짜를 조작하는 함수를 쓰고 마지막에 date_format으로 덮어주는 식으로 사용한다.

 

아래는 날짜값에 하루를 더한 값의 표기 방식을 바꾼 형태이다.

(위랑 같은 ins_date라는 column)

DATE_FORMAT(DATE_ADD(ins_date,INTERVAL 1 DAY),'%Y-%m-%d')

 

WHERE절에서도 범위를 효과적으로 지정할 때도 사용한다.

이렇게 사용하면, 쿼리도 간결해지고 변수로 사용하기도 더 쉬워진다.

(그러나, 성능은 어떨지 모르겠다.)

WHERE DATE_FORMAT(ins_date, '%Y%m) IN '202209' # 2022년 9월 전체

 

반응형

댓글