데이터베이스에서 날짜와 시간 처리는 예약, 로그 기록, 통계 분석 등 다양한 업무에서 필수적입니다. MySQL은 이를 위해 다양한 날짜·시간 함수를 제공하며, 이를 잘 활용하면 복잡한 날짜 계산도 간단히 처리할 수 있습니다.
1) NOW – 현재 날짜와 시간
NOW()
는 현재 날짜와 시간을 YYYY-MM-DD HH:MM:SS
형식으로 반환합니다.
SELECT NOW() AS current_datetime;
결과 예: 2025-08-09 16:30:15
2) CURDATE & CURTIME – 현재 날짜 또는 시간
CURDATE()
: 현재 날짜만 반환CURTIME()
: 현재 시간만 반환
SELECT CURDATE() AS today, CURTIME() AS current_time;
결과 예: today: 2025-08-09
, current_time: 16:30:15
3) DATE_FORMAT – 날짜 형식 변환
DATE_FORMAT()
은 날짜를 지정한 형식으로 변환합니다.
SELECT DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %H시 %i분') AS formatted_date;
결과 예: 2025년 08월 09일 16시 30분
4) DATE_ADD & DATE_SUB – 날짜 더하기/빼기
DATE_ADD()
와 DATE_SUB()
로 날짜를 쉽게 계산할 수 있습니다.
-- 오늘부터 7일 후
SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY) AS plus_7_days;
-- 오늘부터 1개월 전
SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AS minus_1_month;
5) DATEDIFF & TIMESTAMPDIFF – 날짜 차이 계산
DATEDIFF()
는 두 날짜의 일수 차이를 반환하고, TIMESTAMPDIFF()
는 연, 월, 일, 시, 분 등 단위 차이를 구할 수 있습니다.
-- 두 날짜의 일수 차이
SELECT DATEDIFF('2025-12-31', '2025-08-09') AS days_left;
-- 두 날짜의 개월 수 차이
SELECT TIMESTAMPDIFF(MONTH, '2025-01-01', '2025-08-09') AS months_diff;
6) 실전 예제 – 회원 가입 경과일 계산
회원 가입 후 며칠이 지났는지 계산하는 예제입니다.
SELECT user_id, join_date,
DATEDIFF(NOW(), join_date) AS days_since_join
FROM users;
결과: 각 회원의 가입 경과일을 쉽게 확인할 수 있습니다.
MySQL의 날짜·시간 함수는 단순한 현재 시간 조회부터 복잡한 기간 계산까지 다양하게 활용됩니다.
특히 통계, 예약, 만료일 처리 등 비즈니스 로직에서 필수적이므로 자주 쓰이는 함수는 숙지해 두는 것이 좋습니다.
'개발 > DB' 카테고리의 다른 글
MySQL에서 데이터 삭제 및 갱신 시 주의사항 (0) | 2025.08.22 |
---|---|
MySQL에서 데이터를 삽입하고 수정하는 방법 (0) | 2025.08.21 |
MySQL에서 문자열 함수 활용법 (0) | 2025.08.19 |
MySQL에서 EXPLAIN 명령어로 쿼리 성능 분석 (2) | 2025.08.18 |
MySQL에서 LIMIT와 OFFSET을 사용한 페이지네이션 (1) | 2025.08.17 |