MySQL의 INTERVAL 키워드와 함께 산술 연산자(+, -, *, /)를 사용하면 날짜 계산을 더욱 유연하게 처리할 수 있습니다. INTERVAL 단위 값 자체에 연산식을 넣어 원하는 기간을 동적으로 지정할 수 있는데, 각 연산자별 사용 예시를 살펴보겠습니다.
덧셈(+) 연산자 활용
INTERVAL 값 안에서 덧셈 연산을 수행하면 두 값의 합만큼 날짜가 이동합니다. 아래 예제는 2+2인 4년 후의 날짜를 반환합니다.
mysql> Select date('2017-10-22' + INTERVAL 2+2 Year) AS 'Date After (2+2)Years';
+------------------------+
| Date After (2+2) Years |
+------------------------+
| 2021-10-22 |
+------------------------+
1 row in set (0.00 sec)뺄셈(-) 연산자 활용
뺄셈 연산을 적용하면 두 값의 차이만큼 날짜가 계산됩니다. 아래 예제에서는 2-2가 0이므로 원래 날짜가 그대로 출력됩니다.
mysql> Select date('2017-10-22' + INTERVAL 2-2 Year) AS 'Date After (2-2)Years';
+------------------------+
| Date After (2-2) Years |
+------------------------+
| 2017-10-22 |
+------------------------+
1 row in set (0.00 sec)곱셈(*) 연산자 활용
곱셈 연산자를 사용하면 두 값의 곱만큼 기간이 늘어납니다. 아래 예제는 2*2인 4년 후의 날짜를 보여줍니다.
mysql> Select date('2017-10-22' + INTERVAL 2*2 Year) AS 'Date After (2*2)Years';
+------------------------+
| Date After (2*2) Years |
+------------------------+
| 2021-10-22 |
+------------------------+
1 row in set (0.00 sec)나눗셈(/) 연산자 활용
나눗셈 연산자도 마찬가지로 적용할 수 있습니다. 아래 예제에서 2/2는 1이므로 1년 후의 날짜가 반환됩니다.
mysql> Select date('2017-10-22' + INTERVAL 2/2 Year) AS 'Date After (2/2) Years';
+------------------------+
| Date After (2/2) Years |
+------------------------+
| 2018-10-22 |
+------------------------+
1 row in set (0.00 sec)정리
이처럼 MySQL의 INTERVAL 키워드 내부에서 산술 연산자를 활용하면 고정된 숫자 대신 연산 결과를 기반으로 날짜를 유동적으로 계산할 수 있습니다. 이는 복잡한 날짜 로직을 쿼리 하나로 처리해야 하는 상황에서 특히 유용하며, 코드 가독성과 유지보수성 측면에서도 장점이 있습니다.