MySQL에서 INTERVAL 키워드와 함께 두 개 이상의 값으로 구성된 단위 값 세트(예: '4 2')를 지정하면, MySQL은 해당 값 세트 중 첫 번째 값만 참조하여 계산을 수행합니다. 나머지 값은 무시되며, 계산 결과와 함께 경고(warning)가 반환됩니다.
동작 방식
MySQL은 INTERVAL 키워드 뒤에 명시된 단위(예: HOUR, DAY 등)를 기준으로, 제공된 값 세트에서 가장 앞에 있는 값만 사용해 시간 간격을 계산합니다. 이때 사용되지 않은 나머지 값은 올바르지 않은 정수 값으로 판단되어 잘렸다(truncated)는 경고 메시지가 출력됩니다.
예제로 확인하기
아래 예제는 날짜·시간 값에 '4 2'라는 두 개의 값을 HOUR 단위의 INTERVAL과 함께 더하는 경우입니다.
mysql> Select TIMESTAMP('2017-10-22 04:05:36' + INTERVAL '4 2' Hour) AS 'HOUR VALUE INCREASED BY 4';
+---------------------------+
| HOUR VALUE INCREASED BY 4 |
+---------------------------+
| 2017-10-22 08:05:36 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)결과를 보면 원래 시각인 2017-10-22 04:05:36에서 정확히 4시간이 증가한 2017-10-22 08:05:36이 반환되었습니다. 즉, 값 세트 '4 2' 중 첫 번째 값인 4만 HOUR 단위 계산에 사용된 것입니다.
경고 메시지 확인
SHOW WARNINGS 문으로 경고 내용을 확인해 보면, 두 번째 값이 무시되었음을 알 수 있습니다.
mysql> Show warnings; +---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: '4 2' | +---------+------+------------------------------------------+ 1 row in set (0.00 sec)
경고 코드 1292는 "잘못된 정수 값이 잘렸다"는 의미로, MySQL이 '4 2' 전체를 하나의 정수로 해석하지 못하고 첫 번째 값만 사용했으며, 나머지 부분은 버렸음을 보여줍니다.
정리
- INTERVAL 키워드에 여러 값이 포함된 단위 값 세트를 지정하면 첫 번째 값만 계산에 사용됩니다.
- 나머지 값은 무시되며, 결과와 함께 경고(Warning 1292)가 반환됩니다.
- 의도하지 않은 결과를 방지하려면 INTERVAL에는 단일 값을 사용하는 것이 안전합니다.