MySQL의 INTERVAL 키워드는 날짜 값의 시간(time), 날짜(date), 날짜시간(datetime) 단위와 함께 사용할 수 있으며, NOW() 및 CURDATE() 함수와도 동일한 방식으로 활용할 수 있습니다.
INTERVAL 키워드를 사용하면 현재 시점을 기준으로 특정 기간만큼 더하거나 뺀 값을 손쉽게 계산할 수 있습니다. 이는 일정 관리, 만료일 계산, 로그 필터링 등 실무에서 매우 유용하게 쓰입니다.
NOW() 함수에 INTERVAL 적용하기
NOW() 함수는 현재 날짜와 시간을 반환하므로, INTERVAL과 함께 사용하면 현재 시각 기준의 과거 또는 미래 시점을 구할 수 있습니다.
mysql> Select NOW() + INTERVAL 2 day; +------------------------+ | NOW() + INTERVAL 2 day | +------------------------+ | 2017-10-30 09:19:31 | +------------------------+ 1 row in set (0.00 sec) mysql> Select NOW() - INTERVAL 2 day; +------------------------+ | NOW() - INTERVAL 2 day | +------------------------+ | 2017-10-26 09:19:45 | +------------------------+ 1 row in set (0.00 sec) mysql> Select NOW() - INTERVAL 2 hour; +-------------------------+ | NOW() - INTERVAL 2 hour | +-------------------------+ | 2017-10-28 07:19:51 | +-------------------------+ 1 row in set (0.00 sec)
위 예제에서 확인할 수 있듯이, + INTERVAL 2 day는 현재 시각에서 2일 후를, - INTERVAL 2 day는 2일 전을, - INTERVAL 2 hour는 2시간 전의 날짜시간 값을 반환합니다.
CURDATE() 함수에 INTERVAL 적용하기
CURDATE() 함수는 시간 정보 없이 현재 날짜만 반환합니다. 따라서 INTERVAL과 함께 사용하면 날짜 단위의 계산 결과를 얻을 수 있습니다.
mysql> Select CURDATE() - INTERVAL 2 day; +----------------------------+ | CURDATE() - INTERVAL 2 day | +----------------------------+ | 2017-10-26 | +----------------------------+ 1 row in set (0.00 sec) mysql> Select CURDATE() + INTERVAL 2 day; +----------------------------+ | CURDATE() + INTERVAL 2 day | +----------------------------+ | 2017-10-30 | +----------------------------+ 1 row in set (0.00 sec)
결과에서 볼 수 있듯이 CURDATE()와 INTERVAL을 조합하면 시간 없이 순수한 날짜(date) 값으로 결과가 출력됩니다.
활용 가능한 INTERVAL 단위
INTERVAL 키워드에는 다음과 같은 다양한 시간 단위를 사용할 수 있습니다.
- MICROSECOND(마이크로초)
- SECOND(초), MINUTE(분), HOUR(시간)
- DAY(일), WEEK(주), MONTH(월), QUARTER(분기), YEAR(년)
- 복합 단위: DAY_HOUR, DAY_MINUTE, DAY_SECOND, HOUR_MINUTE, HOUR_SECOND, MINUTE_SECOND 등
정리
NOW()는 날짜와 시간을 모두 포함한 datetime 값을 반환하고, CURDATE()는 날짜만 반환한다는 차이가 있습니다. 두 함수 모두 INTERVAL 키워드와 결합하면 덧셈(+)과 뺄셈(-) 연산자를 통해 과거나 미래의 특정 시점을 간편하게 계산할 수 있어, SQL 쿼리 내에서 날짜 연산을 처리할 때 매우 편리합니다.