DATE_FORMAT 함수
SQL을 작성하다 보면, 시간과 날짜에 관련된 COLUMN들을 활용하는 경우가 종종 있습니다.
이번 글에서는 DATETIME 에 관련된 포맷과 DATE_FORMAT 함수에 관련하여 정리 해 보겠습니다.
이 함수는 DATETIME 의 TYPE을 가진 칼럼의 형식을 수정, 지정해 주는 함수입니다.
쿼리를 작성하시다 보면, 내가 가지고 있는 DATETIME 컬럼에 들어있는 형태의 값이 아닌 다른 형태로 가지고 싶은 상황에 맞닥트리곤 합니다.
예를 들어,
1. 2021/01/24 12:33:32 로 기입되어 있는 항목을 2021-01-24 12:33:32로 바꿔 출력하고 싶은 상황
2. 2021/01/24 12:33:32 로 기입되어 있는 항목에서 필요한 값만 뽑아내고 싶은 상황
이 두 상황으로 DATE_FORMAT을 설명드리겠습니다.
[1] 사용 형태
우선 사용법에 대해 알아보겠습니다.
사용법은 아래와 같습니다. 변경하기 원하는 값 또는 칼럼을 처음 인수로 입력하고, 뒤에는 형식을 지정해 줍니다.
DATE_FORMAT("날짜값,날짜컬럼", "%Y");
사용 가능한 형식은 아래 첨부 해 두겠습니다.
그럼 위에서 언급했던 상황들을 하나씩 해결 해 보겠습니다.
1. 2021/01/24 12:33:32 로 기입되어 있는 항목을 2021-01-24 12:33:32로 바꿔 출력하고 싶은 상황
SELECT DATE_FORMAT("2021/01/24 12:33:32", "%Y-%m-%d");
결과는 2021-01-24 12:33:32 으로 출력됩니다.
2. 2021/01/24 12:33:32로 기입되어 있는 항목에서 필요한 값만 뽑아내고 싶은 상황
- 시간 값은 빼고, '년도/월/일' 형식으로 뽑아내고 싶은 경우
SELECT DATE_FORMAT("2021/01/24 12:33:32", "%Y/%m/%d");
결과는 2021/01/24
-'연도' 만 뽑아내고 싶은 경우
SELECT DATE_FORMAT("2021/01/24 12:33:32", "%Y");
결과는 2021
-'년도'는 뒤 자리 2개만으로 표현하고, '월'은 영어로, 그리고 '일'은 영어식 22th 식으로 표현하고 싶은 경우
SELECT DATE_FORMAT("2021/01/24 12:33:32", "%y/%M/%D");
결과는 21/January/24th
-이 것은 아래 표에 존재하는 형식에 따른 결과입니다. 표현식에서 %Y는 연도를 4자리로 표현을 하고, %y는 4자리 중 뒤에 두 자리를 표현하는 등, 각기 다른 결과를 보여줍니다.
[2] 참고 사항
아래 테이블은 사용가능한 표현 형식입니다. 이를 잘 조합해서 사용하시면 되겠습니다. 아래 표에 자주 사용하는 항목들을 한글로 간단하게 번역 해 놓았으니 참고 바라겠습니다.
Format Description
%a | Abbreviated weekday name (Sun to Sat) | 요일 명을 Sun to Sat 으로 |
%b | Abbreviated month name (Jan to Dec) | 월 별 이름을 Jan to Dec 으로 |
%c | Numeric month name (0 to 12) | 월 별 이름을 0 ~12 로 |
%D | Day of the month as a numeric value, followed by suffix (1st, 2nd, 3rd, ...) | 일 이름을 1st, 2nd,... 으로 |
%d | Day of the month as a numeric value (01 to 31) | |
%e | Day of the month as a numeric value (0 to 31) | |
%f | Microseconds (000000 to 999999) | |
%H | Hour (00 to 23) | |
%h | Hour (00 to 12) | |
%I | Hour (00 to 12) | |
%i | Minutes (00 to 59) | |
%j | Day of the year (001 to 366) | |
%k | Hour (0 to 23) | 24시간 표기법으로 |
%l | Hour (1 to 12) | 12시간 표기법으로 |
%M | Month name in full (January to December) | 달 이름을 Full Name으로 |
%m | Month name as a numeric value (00 to 12) | 달 이름을 00~12 숫자로 |
%p | AM or PM | PM, AM 표시 |
%r | Time in 12 hour AM or PM format (hh:mm:ss AM/PM) | |
%S | Seconds (00 to 59) | |
%s | Seconds (00 to 59) | |
%T | Time in 24 hour format (hh:mm:ss) | 24시간 표기법으로 |
%U | Week where Sunday is the first day of the week (00 to 53) | |
%u | Week where Monday is the first day of the week (00 to 53) | |
%V | Week where Sunday is the first day of the week (01 to 53). Used with %X | |
%v | Week where Monday is the first day of the week (01 to 53). Used with %x | |
%W | Weekday name in full (Sunday to Saturday) | 요일 이름을 Full Name으로 |
%w | Day of the week where Sunday=0 and Saturday=6 | Sunday=0~Saturday=6 으로 |
%X | Year for the week where Sunday is the first day of the week. Used with %V | 일주일의 시작을 일요일 |
%x | Year for the week where Monday is the first day of the week. Used with %v | 일주일의 시작을 월요일 |
%Y | Year as a numeric, 4-digit value | 년도 표현 4자리로 |
%y | Year as a numeric, 2-digit value | 년도 표현 2자리로 |
[3] 참고 자료
https://www.w3schools.com/mysql/func_mysql_date_format.asp
'DataBase > MYSQL' 카테고리의 다른 글
[MYSQL] CASE 함수 - 조건을 걸어보자! (0) | 2021.09.12 |
---|---|
[MYSQL] DATA TYPE (Version 8.0) (0) | 2021.07.09 |
[MYSQL] TIMEDIFF/ DATEDIFF /TIMESTAMPDIFF 함수 - 날짜 차이 계산 (0) | 2021.07.09 |
[MYSQL] CHAR_LENGTH 함수 - 문자열 길이 (2) | 2021.05.31 |
[MYSQL] LIKE 함수 - 특정 문자 검색하기 (1) | 2021.05.26 |
댓글