컴퓨터 과학/데이터 베이스

MySQL 날짜 관련 함수 정리

Data Jun 2025. 8. 17. 16:32

데이터를 다루다 보면 날짜 간 차이를 구하거나, 특정 날짜를 기준으로 더하고 빼거나, 혹은 Timestamp를 변환해야 하는 경우가 많습니다. MySQL은 이런 상황에 유용하게 쓸 수 있는 여러 가지 날짜 함수들을 제공합니다.

 

날짜 간의 차이 구하기 – DATEDIFF()

DATEDIFF(날짜A, 날짜B)는 두 날짜의 차이를 일 단위 정수 값으로 반환합니다.

예를 들어,

SELECT DATEDIFF('2018-01-05', '2018-01-03');

결과는 2가 됩니다.

회원 테이블에서 특정 기준일(예: 2019-01-01)과 가입일(sign_up_day)의 차이를 구하면, 각 회원이 기준일로부터 며칠 후에 가입했는지 알 수 있습니다.

 

오늘 날짜 구하기 – CURDATE()

오늘 날짜를 구하려면 CURDATE() 함수를 사용합니다.

예를 들어,

SELECT email, sign_up_day, CURDATE(), 
       DATEDIFF(sign_up_day, CURDATE()) 
FROM member;

이렇게 하면 각 회원의 가입일과 오늘 날짜 기준 며칠 차이인지를 쉽게 확인할 수 있습니다.

 

날짜 더하기 & 빼기 – DATE_ADD(), DATE_SUB()

특정 날짜에서 며칠을 더하거나 빼고 싶을 때는 DATE_ADD() 또는 DATE_SUB()를 사용합니다.

예를 들어, 가입일 기준으로 300일 뒤의 날짜를 구하려면:

SELECT email, sign_up_day, 
       DATE_ADD(sign_up_day, INTERVAL 300 DAY) 
FROM member;

가입일 기준으로 250일 전의 날짜를 구하고 싶다면:

SELECT email, sign_up_day, 
       DATE_SUB(sign_up_day, INTERVAL 250 DAY) 
FROM member;

 

 

Unix Timestamp 다루기 – UNIX_TIMESTAMP(), FROM_UNIXTIME()

DB에 따라 날짜/시간이 예쁘게 저장되어 있지 않고, 1553526000 같은 큰 숫자로 들어가 있는 경우가 있습니다.
이 값이 바로 Unix Timestamp입니다.

  • Unix Timestamp: 1970년 1월 1일 00:00:00을 기준으로 몇 초가 지났는지를 나타내는 값

MySQL에서는 UNIX_TIMESTAMP() 함수로 날짜를 Timestamp로 변환할 수 있고,
FROM_UNIXTIME() 함수로 다시 사람이 읽을 수 있는 날짜/시간 형식으로 바꿀 수 있습니다.

-- 날짜를 Unix Timestamp로
SELECT UNIX_TIMESTAMP('2019-01-05');  

-- Unix Timestamp를 날짜로
SELECT FROM_UNIXTIME(1553526000);

 

정리

  • DATEDIFF(A, B) → 두 날짜 차이 (일 단위)
  • CURDATE() → 오늘 날짜
  • DATE_ADD(), DATE_SUB() → 날짜에서 일/월/년 더하기, 빼기
  • UNIX_TIMESTAMP(), FROM_UNIXTIME() → 날짜 ↔ Timestamp 변환

👉 실무에서는 날짜 계산이 빈번하게 필요하기 때문에, 위 함수들을 잘 기억해두면 데이터 분석과 리포팅을 훨씬 수월하게 할 수 있습니다.