본문 바로가기
IT/MYSQL

MYSQL - DATE_FOMAT 날짜 형식 지정하기(YYYYMMDD, %Y%m%d)

by 꿀코 2023. 3. 2.
반응형

MYSQL에서 DATE_FORMAT 함수를 활용하여 원하는 형식으로 날짜를 조회할 수 있습니다. 오라클의 TO_DATE 함수와 비슷한 기능을 한다고 볼 수 있습니다. DATE_FORMAT 함수는 MYSQL의 DATAETIME 형식이나 비정형화된 날짜 형식들을 공통 양식으로 조회하고 싶을 때 사용하는 유용한 함수입니다.

 

 

DATE_FORMAT 사용 방법

DATE_FORAMT의 기본 문법에 대해 알아보겠습니다.

  • DATE_FORMAT(DATE, '날짜형식');

 1) 첫 번째 변수, 변경 대상이 되는 DATE 값

 2) 두 번째 변수, 변경하고 싶은 날짜 형식

 

다음은 예시를 통해 실제로 어떻게 사용하는지 알아보겠습니다.

# 현재 시간을 YYYY-mm-dd 형식으로 변환
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
-> 2023-03-02

NOW() 함수는 현재 시간을 가져오는 주로 게시판, 댓글 등에 글이 등록되는 DATETIME 컬럼에 DEFAULT 값으로 설정하여 사용합니다.

 

 

DATE_FORMAT 표현식

DATE_FORMAT에는 날짜를 표현할 수 있는 다양한 형식이 있습니다.

 

형식 설명
%M Month 월(Janeary, February ...)
%m Month 월(01, 02, 03 ...)
%W Day of Week 요일(Sunday, Monday ...)
%D Month 월(1st, 2dn, 3rd ...)
%Y Year 연도(2021, 2022, 2023)
%y Year 연도(21, 22, 23)
%X Year 연도(2021, 2022, 2023) %V와 함께 사용
%x Year 연도(2021, 2022, 2023) %v와 함께 사용
%a Day of Week요일(Sun, Mon, Tue ...)
%d Day 일(00, 01, 02 ...)
%e Day 일(0, 1, 2 ..)
%c Month(1, 2, 3 ..)
%b Month(Jen Feb ...)
%j n번째 일(100, 365)
%H Hour 시(00, 01, 24) 24시간
%h Hour 시(01, 02, 12) 12시간
%I(대문자 i) Hour 시(01, 02 12) 12시간
%l(소문자 L) Hour 시(1, 2, 12) 12 시간
%i Minute 분(00, 01 59)
%r hh:mm:ss AP, PM
%T hh:mm:ss
%S, %s Second 초
%p AP, PM
%w Day Of Week (0, 1, 2) 0 = 일요일
%U Week 주(시작: 일요일)
%u Week 주(시작 월요일)
%V Week 주(시작: 일요일)
%v Week 주(시작:월요일)

 

위의 날짜 형식들을 조합하여 다양한 형태로 날짜를 조회할 수 있습니다.

SELECT DATE_FORMAT(NOW(),'%Y/%m/%d');
-> 2023/03/02
SELECT DATE_FORMAT(NOW(),'%Y-%c-%e');
-> 2023-3-2
SELECT DATE_FORMAT(NOW(),'%H:%i:%s');
-> 23:41:54

# 한글 요일 포함하는 날짜 형식
SELECT CASE
         WHEN DATE_FORMAT(NOW(), '%w') = '1' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (일)')
         WHEN DATE_FORMAT(NOW(), '%w') = '1' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (월)')
         WHEN DATE_FORMAT(NOW(), '%w') = '2' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (화)')
         WHEN DATE_FORMAT(NOW(), '%w') = '3' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (수)')
         WHEN DATE_FORMAT(NOW(), '%w') = '4' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (목)')
         WHEN DATE_FORMAT(NOW(), '%w') = '5' THEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (금)')
         ELSE CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'), ' (토)')
       END
-> 2023-03-02 (목)
반응형

댓글