MySQL에서 현재 날짜와 시간으로부터 특정 일수를 빼야 하는 경우가 자주 발생합니다. 예를 들어 10일 전의 날짜를 조회하거나, 최근 10일 이내의 데이터를 필터링할 때 유용합니다. 이 글에서는 DATE_SUB() 함수를 사용해 현재 날짜·시간에서 10일을 빼는 방법을 단계별로 알아보겠습니다.
1단계: now() 함수로 현재 날짜·시간 확인하기
먼저 now() 함수를 사용하여 MySQL 서버의 현재 날짜와 시간을 확인합니다.
mysql> select now();
실행 결과는 다음과 같습니다.
+---------------------+ | now() | +---------------------+ | 2018-11-01 19:55:56 | +---------------------+ 1 row in set (0.00 sec)
2단계: DATE_SUB() 함수 문법 이해하기
DATE_SUB() 함수는 지정한 날짜에서 원하는 시간 간격(interval)만큼을 뺀 결과를 반환합니다. 10일을 빼는 기본 문법은 다음과 같습니다.
select DATE_SUB(now(), interval integer_value day);
- now(): 기준이 되는 현재 날짜·시간
- integer_value: 뺄 일수(정수)
- day: 시간 단위(일 단위로 계산)
3단계: 현재 날짜·시간에서 10일 빼기
위 문법에 실제 값 10을 적용하면 다음과 같습니다.
mysql> select DATE_SUB(now(), interval 10 day);
실행 결과입니다.
+---------------------------------+ | DATE_SUB(now(),interval 10 day) | +---------------------------------+ | 2018-10-22 19:56:07 | +---------------------------------+ 1 row in set (0.00 sec)
현재 날짜가 2018년 11월 1일이었으므로, 정확히 10일 전인 2018년 10월 22일이 반환된 것을 확인할 수 있습니다.
참고: 다른 표현 방식
DATE_SUB() 대신 산술 연산자를 사용해도 동일한 결과를 얻을 수 있습니다.
mysql> select now() - interval 10 day;
또한 날짜(연월일)만 필요하다면 CURDATE() 함수를 활용할 수 있습니다.
mysql> select DATE_SUB(CURDATE(), interval 10 day);
이처럼 DATE_SUB() 함수와 INTERVAL 구문을 조합하면 일(day)뿐 아니라 월(month), 년(year), 시간(hour) 등 다양한 단위로 날짜를 손쉽게 계산할 수 있습니다.