반응형
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 (목)
반응형
'IT > MYSQL' 카테고리의 다른 글
MYSQL - GROUP_CONCAT 사용 방법, 데이터 연결하기 (0) | 2023.03.05 |
---|---|
MYSQL - CONCAT 함수로 컬럼, 문자 연결하는 방법 (0) | 2023.03.03 |
MYSQL - NULL 처리하기 3가지 방법(IFNULL, CASE, COALESCE) (0) | 2023.02.27 |
MYSQL - ROLLUP 함수로 소계, 합계 한 번에 조회하기 (0) | 2023.02.26 |
MYSQL - SUM, MAX, MIN, AVG, COUNT 집계함수 데이터 조회하기 (0) | 2023.02.25 |
댓글