데이터를 다루다 보면 날짜 간 차이를 구하거나, 특정 날짜를 기준으로 더하고 빼거나, 혹은 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 변환
👉 실무에서는 날짜 계산이 빈번하게 필요하기 때문에, 위 함수들을 잘 기억해두면 데이터 분석과 리포팅을 훨씬 수월하게 할 수 있습니다.
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL CAST() 함수 – 데이터 타입 변환하기 (2) | 2025.08.17 |
|---|---|
| SQL 조건문에서 흔히 하는 실수 2가지 (1) | 2025.08.17 |
| SQL IN 구문 알아보기 (1) | 2025.08.17 |
| SQL LIKE 구문 이해하기 (1) | 2025.08.17 |
| SQL BETWEEN 구문 이해하기 (1) | 2025.08.17 |