MySQL에서는 하나의 INTERVAL 표현식에 두 개 이상의 시간 단위를 동시에 지정할 수 있습니다. 이를 복합(compound) INTERVAL 단위라고 하며, 날짜나 시간 값에 여러 단위를 한 번에 더하거나 뺄 때 매우 유용합니다.
복합 INTERVAL 단위의 기본 문법
복합 INTERVAL 단위 키워드는 두 개의 단위 키워드가 언더스코어(_)로 연결된 형태로 구성됩니다. 예를 들어 YEAR_MONTH, DAY_HOUR, HOUR_MINUTE 등이 대표적입니다.
복합 단위를 실제로 사용할 때는 다음 두 가지 규칙을 반드시 지켜야 합니다.
- 단위 값은 반드시 작은따옴표(' ')로 묶어야 합니다.
- 각 단위에 해당하는 값들은 공백으로 구분하여 작성해야 합니다.
사용 예제
다음 쿼리는 특정 날짜·시간 값에 2년과 2개월을 동시에 더하는 예제입니다. 복합 단위 YEAR_MONTH를 사용하며, 값은 '2 2'처럼 공백으로 구분하여 전달합니다.
mysql> Select timestamp('2017-10-22 04:05:36' + INTERVAL '2 2' year_month) AS 'Date After 2 Years and 2 Months';
+---------------------------------+
| Date After 2 Years and 2 Months |
+---------------------------------+
| 2019-12-22 04:05:36 |
+---------------------------------+
1 row in set (0.00 sec)실행 결과를 보면 원래 날짜인 2017년 10월 22일에 2년이 더해져 2019년이 되었고, 2개월이 추가되어 최종적으로 2019-12-22 04:05:36이 반환된 것을 확인할 수 있습니다.
주요 복합 INTERVAL 단위 목록
MySQL에서 활용할 수 있는 대표적인 복합 단위는 다음과 같습니다.
DAY_HOUR— 일과 시간DAY_MINUTE— 일, 시간, 분DAY_SECOND— 일, 시간, 분, 초HOUR_MINUTE— 시간과 분HOUR_SECOND— 시간, 분, 초MINUTE_SECOND— 분과 초YEAR_MONTH— 년과 월
이처럼 복합 INTERVAL 단위를 활용하면 여러 번의 연산 없이도 하나의 쿼리로 복잡한 날짜 계산을 간결하게 처리할 수 있습니다.