날짜 / 시간 데이터 타입
MySQL은 다섯 가지 종류의 날짜 / 시간 데이터 타입을 사용한다.
타입 | 정보 | 범위 | 형식 | 바이트수 |
DATE | 날짜 정보 | 1000-01-01 ~ 9999-12-31 |
YYYY-MM-DD | 3 Byte |
DATETIME | 날짜와 시간 정보 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS | 8 Byte |
TIMESTAMP | 1970-01-01 00:00:00 UTC을 기준으로 한 초수 * MySQL 버전과 서버의 SQL 실행모드에 따라 동작이 다르다. |
4 Byte | ||
TIME | 시각 정보 | -838:59:59 ~ 838:59:59 |
HH:MM:SS | 3 Byte |
YEAR | 2자리수 또는 4자리수의 년도 정보. 기본적으로 4자리수를 사용한다. |
2자리수 : 70 ~ 69 4자리수 : 1901 ~ 2155, 0000 |
1 Byte |
이 글에서는 날짜 / 시간 데이터를 다룰 때 사용하는 NOW, DATE_FORMAT 함수를 간단히 정리한다.
NOW
현재 시간을 DATETIME 형의 데이터로 반환한다.
SELECT NOW();
DATE_FORMAT
매개변수로 전달한 날짜, 시간 데이터를 지정한 포맷으로 변환한다.
DATE_FORMAT(date, format)
# date : 포매팅할 날짜, 시간
# formate : 사용할 형식
format
형식 | 설명 |
%a | 요일 (Sun ~ Sat) |
%b | 월 (Jan ~ Dec) |
%c | 월 (0 ~ 12) |
%D | 그 달의 날짜와 접미사가 붙은 값. |
%d | 날짜 (01 ~ 31) |
%e | 날짜 (0 ~ 31) |
%f | 마이크로초 (000000 ~ 999999) |
%H | 시 (00 ~ 23) |
%h | 시 (00 ~ 12) |
%I | 시 (00 ~ 12) |
%i | 분 (00 ~ 59) |
%j | 일 (001 ~ 366) |
%k | 시 (0 ~ 23) |
%l | 시 (1 ~ 12) |
%M | 월 (January ~ Decemnber) |
%m | 월 (00 ~ 12) |
%p | AM 또는 PM |
%r | AM 또는 PM이 표함된 시각 (hh:mm:ss AM/PM) |
%S | 초 (00 ~ 59) |
%s | 초 (00 ~ 59) |
%T | 시각 (hh:mm:ss) |
%U | 주 (시작일 : 일요일) |
%u | 주 (시작일 : 월요일) |
%V | 주 (시작일 : 일요일). %X와 함께 사용 |
%v | 주 (시작일 : 월요일). %x와 함께 사용 |
%W | 요일 (Sunday ~ Saturday) |
%w | 요일 (0 ~ 6) |
%X | 연도 (주의 시작일 : 일요일) %V와 함께 사용 |
%x | 연도 (주의 시작일 : 월요일) %v와 함께 사용 |
%Y | 연도 (4자리수) |
%y | 연도 (2자리수) |
DATE_FORMAT 예시
자주 사용하는 형태를 몇 가지 정리한다.
YYYY-MM-DD
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
YY-MM-DD
SELECT DATE_FORMAT(NOW(), '%y-%m-%d');
24시간제
SELECT DATE_FORMAT(NOW(), '%H-%i-%s');
SELECT DATE_FORMAT(NOW(), '%T');
12시간제
SELECT DATE_FORMAT(NOW(), '%h-%i-%s');