[MYSQL] DATE_FORMAT과 날짜 관련 함수들

컴투루·2023년 3월 15일
0

MYSQL

목록 보기
1/1

DATE_FORMAT

프로그래머스 SQL 고득점 Kit 문제를 풀다보니 월별 출력하기, 시각에 따른 COUNT, 해당 월에 대한 값 등 DATE TYPE을 원하는 형태로 변경해서 사용하는 문제들이 많았다.

DATE_FORMAT(날짜, 형식)

위와 같은 형태로 나타낸다. 날짜를 지정한 형식으로 출력하는 것이다.

예를들어 DATE TYPE의 컬럼 START_DATE의 값이 2022-03-06 00:00:00 일 때 우리는 '년-월'의 형태로 출력되기를 기대해보자.

DATE_FORMAT(START_DATE,'%Y-%m)

위와같이 하고 SELECT 을 하면 우리가 원하는 '2022-03'의 형태로 출력된다.

날짜 뿐만 아니라 시간도 추출할 수 있다.

DATE_FORMAT에서 사용하는 구분기호는 아래와 같다.

구분기호역할구분기호역할
%Y4자리 년도%m숫자 월(두자리)
%y2자리 년도%c숫자 월(한자리)
%M긴 월(영문)%d일자(두자리)
%b짧은 월(영문)%e일자(한자리)
%W긴 요일 이름(영문)%I시간(12시간)
%a짧은 요일 이름(영문)%H시간(24시간)
%i%rhh:mm:ss AM,PM
%Thh:mmSS%S

다양하게 추출이 가능하다.

하지만 나는 문제를 풀면서 DATE_FORMAT(날짜,'%Y-%m-%d') 를 가장 많이 사용했다.


MYSQL에서 사용하는 날짜 관련 함수들

  • dayofweek(date) : 날짜를 한 주의 몇번째 요일인지를 숫자로 (1 = 일, 2 = 월)
  • weekday(date) : 날짜를 한 주의 몇번째 요일인지를 숫자로 (0 = 월, 1 = 화)
  • dayofmonth(date) : 그 달의 몇 번째 날, 리턴값은 1~ 31
  • dayofyear(date) : 한 해의 몇 번째 날인지, 리턴값은 1 ~ 366
  • month(date) : 몇 월, 리턴값은 1~ 12
  • dayname(date) : 영어식 요일 이름
  • monthname(date) : 영어식 월 이름
  • quarter(date) : 분기
  • week(date) : 몇 번째 주일
  • week(date, first) : 주어진 인수로 한 주의 시작일을 지정 (0이면 일요일, 1이면 월요일을 시작으로 지정)
  • year(date) : 년도
  • hour(time) : 시간(0~23)
  • minute(time) : 분 (0~59)
  • second(time) : 초 (0~59)
  • period_add(p,n) : 주어진 달에 n개월을 더함 , 리턴값은 yyyymm
  • period_diff(p1,p2) : 주어진 두 기간 사이의 개월

이 함수들은 간단하게 2023년에 구매한 회원을 구하고자 할때 DATE_FORMAT을 사용하는 것보다는 YEAR(DATE)가 훨씬 편리하기 때문에 알아두기로!


[ 프로그래머스 SQL 고득점 Kit ]


📑 References

[mysql]날짜 관련 함수 모음

profile
맘 먹으면 못할 게 없지

0개의 댓글