MySQL은 덧셈(+)과 뺄셈(-) 연산자에 INTERVAL 키워드와 시간 단위를 조합하여 date 또는 datetime 값에 대한 날짜 연산을 간단하게 수행할 수 있습니다.
기본 문법
SELECT '날짜' + INTERVAL n unit; SELECT '날짜' - INTERVAL n unit;
여기서 unit에는 day, month, year, hour, minute, second 등 다양한 시간 단위를 지정할 수 있습니다.
예제 1: 특정 날짜에 2일 더하기
mysql> Select '2017-05-20' + INTERVAL 2 day; +-------------------------------+ | '2017-05-20' + INTERVAL 2 day | +-------------------------------+ | 2017-05-22 | +-------------------------------+ 1 row in set (0.00 sec)
예제 2: 특정 날짜에서 2일 빼기
mysql> Select '2017-05-20' - INTERVAL 2 day; +-------------------------------+ | '2017-05-20' - INTERVAL 2 day | +-------------------------------+ | 2017-05-18 | +-------------------------------+ 1 row in set (0.00 sec)
예제 3: 날짜시간에 3시간 더하기
datetime 값에도 동일한 방식으로 시간 단위 연산이 가능합니다.
mysql> Select '2017-05-20 05:04:35' + INTERVAL 3 hour; +-----------------------------------------+ | '2017-05-20 05:04:35' + INTERVAL 3 hour | +-----------------------------------------+ | 2017-05-20 08:04:35 | +-----------------------------------------+ 1 row in set (0.00 sec)
예제 4: 특정 날짜에 1개월 더하기
mysql> Select '2017-05-20 05:04:35' + INTERVAL 1 month; +------------------------------------------+ | '2017-05-20 05:04:35' + INTERVAL 1 month | +------------------------------------------+ | 2017-06-20 05:04:35 | +------------------------------------------+ 1 row in set (0.00 sec)
참고 사항
월 단위 연산 시 해당 월의 마지막 날보다 큰 날짜가 되는 경우, MySQL은 자동으로 그 달의 마지막 날로 조정합니다. 예를 들어 '2024-01-31' + INTERVAL 1 month의 결과는 2024-02-29(윤년 기준)가 됩니다.
이처럼 INTERVAL 키워드를 활용하면 복잡한 함수 호출 없이도 직관적인 구문으로 다양한 날짜 연산을 손쉽게 처리할 수 있습니다.