날짜 / 시간 데이터 타입
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');

참고 문서
728x90

