MySQL에서 날짜와 시간 관련 함수 사용법

데이터베이스에서 날짜와 시간 처리는 예약, 로그 기록, 통계 분석 등 다양한 업무에서 필수적입니다. 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의 날짜·시간 함수는 단순한 현재 시간 조회부터 복잡한 기간 계산까지 다양하게 활용됩니다.

특히 통계, 예약, 만료일 처리 등 비즈니스 로직에서 필수적이므로 자주 쓰이는 함수는 숙지해 두는 것이 좋습니다.