MySQL은 날짜와 시간 데이터를 효율적으로 처리하기 위한 다양한 시간 함수를 제공합니다. 이 글에서는 현재 시각, 날짜 추출, 요일 및 형식화 등 자주 사용하는 날짜/시간 함수를 예제와 함께 정리했습니다.
🕒 1. 현재 날짜와 시간 확인
| 함수 |
설명 |
예시 결과 |
NOW() |
현재 날짜와 시간 |
'2023-12-01 15:20:30' |
CURDATE() |
현재 날짜만 |
'2023-12-01' |
CURTIME() |
현재 시간만 |
'15:20:30' |
SELECT NOW(), CURDATE(), CURTIME();
📆 2. 날짜·시간 정보 추출
| 함수 |
설명 |
예시 결과 |
DATE() |
날짜만 추출 |
DATE('2023-12-01 12:00:00') → '2023-12-01' |
MONTH() |
월 숫자 반환 (1~12) |
MONTH('2023-12-01') → 12 |
DAY() |
일 숫자 반환 (1~31) |
DAY('2023-12-01') → 1 |
HOUR() |
시간 (0~23) |
HOUR('12:34:56') → 12 |
MINUTE() |
분 (0~59) |
MINUTE('12:34:56') → 34 |
SECOND() |
초 (0~59) |
SECOND('12:34:56') → 56 |
SELECT DATE('2016-02-19 12:34:56'),
MONTH('2016-02-19'),
DAY('2016-02-19'),
HOUR('12:34:56'),
MINUTE('12:34:56'),
SECOND('12:34:56');
📅 3. 월/요일 이름 반환
| 함수 |
설명 |
예시 결과 |
MONTHNAME() |
월 이름 |
MONTHNAME('2023-12-01') → 'December' |
DAYNAME() |
요일 이름 |
DAYNAME('2023-12-01') → 'Friday' |
SELECT MONTHNAME('2023-12-01'), DAYNAME('2023-12-01');
📌 4. 연도/월/주 단위 정보
| 함수 |
설명 |
예시 결과 |
DAYOFWEEK() |
주의 몇 번째 날인지 (일요일=1) |
DAYOFWEEK('2023-12-01') → 6 |
DAYOFMONTH() |
월의 며칠인지 (1~31) |
DAYOFMONTH('2023-12-01') → 1 |
DAYOFYEAR() |
연도의 몇 번째 날인지 (1~366) |
DAYOFYEAR('2023-12-01') → 335 |
SELECT DAYOFMONTH('2023-12-01'),
DAYOFWEEK('2023-12-01'),
DAYOFYEAR('2023-12-01');
| 형식 |
설명 |
예시 |
%a |
요일 축약형 |
Mon |
%b |
월 축약형 |
Dec |
%d |
날짜 (2자리) |
01 |
%H |
시간 (24시) |
15 |
%M |
월 이름 |
December |
%p |
AM/PM 표기 |
AM |
%Y |
4자리 연도 |
2023 |
예제: 날짜를 형식화
SELECT DATE_FORMAT('2017-02-19 12:34:56', '%D %y %a %d %m %b %j');
-- 결과: '19th 17 Sun 19 02 Feb 050'
또는 단순 형식으로:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
📋 요약 테이블
| 함수 |
설명 |
결과 예시 |
NOW() |
현재 날짜와 시간 |
'2023-12-01 15:20:30' |
CURDATE() |
현재 날짜 |
'2023-12-01' |
CURTIME() |
현재 시간 |
'15:20:30' |
DATE(expr) |
날짜만 추출 |
'2023-12-01' |
MONTH(expr) |
월 숫자 반환 |
12 |
DAY(expr) |
일 숫자 반환 |
1 |
MONTHNAME() |
월 이름 |
'December' |
DAYNAME() |
요일 이름 |
'Friday' |
DAYOFYEAR() |
연도의 몇 번째 날인지 |
335 |
DATE_FORMAT() |
날짜 형식 변환 |
'2023-12-01' → '2023-12-01' |
질문 정리
Q1. 오늘 날짜 기준으로 7일 전 날짜를 구하려면?
SELECT CURDATE() - INTERVAL 7 DAY;
Q2. 현재 시각에서 3시간 더한 시간은?
SELECT NOW() + INTERVAL 3 HOUR;
Q3. 요일 숫자가 필요해요. 월요일이 1이 되게 하려면?
SELECT WEEKDAY('2023-12-01'); -- 결과: 4 (월요일이 0부터 시작)
댓글남기기