MySQL의 INTERVAL 키워드는 날짜 및 시간 값에 특정 기간을 더하거나 빼는 데 사용됩니다. 이 키워드와 함께 활용할 수 있는 단위 값은 매우 다양하며, 각 단위는 마이크로초부터 연도까지 폭넓은 시간 범위를 지원합니다.
아래에서는 MySQL INTERVAL 키워드와 함께 사용할 수 있는 주요 단위 값들을 예제와 함께 하나씩 살펴보겠습니다.
MICROSECOND(마이크로초)
MICROSECOND 단위는 현재 시간 또는 사용자가 지정한 시간에 특정 마이크로초를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 100 MICROSECOND; +--------------------------------+ | NOW()+INTERVAL 100 MICROSECOND | +--------------------------------+ | 2017-10-28 18:47:25.000100 | +--------------------------------+ 1 row in set (0.00 sec)
위 쿼리는 MySQL INTERVAL 키워드를 사용하여 현재 날짜와 시간에 100마이크로초를 더한 결과입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 100 Microsecond; +--------------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 100 Microsecond | +--------------------------------------------------+ | 2017-02-25 05:04:30.000100 | +--------------------------------------------------+ 1 row in set (0.00 sec)
이번에는 사용자가 지정한 날짜와 시간에 100마이크로초가 더해진 것을 확인할 수 있습니다.
SECOND(초)
SECOND 단위는 현재 시간 또는 지정된 시간에 특정 초를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 59 SECOND; +--------------------------+ | NOW()+INTERVAL 59 SECOND | +--------------------------+ | 2017-10-28 18:49:30 | +--------------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 59초를 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 59 Second; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 59 Second | +--------------------------------------------+ | 2017-02-25 05:05:29 | +--------------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에도 같은 방식으로 59초가 더해진 결과를 볼 수 있습니다.
MINUTE(분)
MINUTE 단위는 현재 시간 또는 지정된 시간에 특정 분을 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 10 MINUTE; +--------------------------+ | NOW()+INTERVAL 10 MINUTE | +--------------------------+ | 2017-10-28 18:58:44 | +--------------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 10분을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 10 Minute; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 10 Minute | +--------------------------------------------+ | 2017-02-25 05:14:30 | +--------------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 10분이 더해진 결과입니다.
HOUR(시)
HOUR 단위는 현재 시간 또는 지정된 시간에 특정 시간을 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 2 HOUR; +-----------------------+ | NOW()+INTERVAL 2 HOUR | +-----------------------+ | 2017-10-28 20:55:44 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 2시간을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Hour; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Hour | +-----------------------------------------+ | 2017-02-25 06:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 1시간이 더해진 결과입니다.
DAY(일)
DAY 단위는 현재 날짜 또는 지정된 날짜에 특정 일수를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 10 DAY; +-----------------------+ | NOW()+INTERVAL 10 DAY | +-----------------------+ | 2017-11-07 18:48:53 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 10일을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 10 Day; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 10 Day | +-----------------------------------------+ | 2017-03-07 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 10일이 더해진 결과입니다.
WEEK(주)
WEEK 단위는 현재 날짜 또는 지정된 날짜에 특정 주(주 = 7일)를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 1 WEEK; +-----------------------+ | NOW()+INTERVAL 1 WEEK | +-----------------------+ | 2017-11-04 18:49:10 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 1주일, 즉 7일을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Week; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Week | +-----------------------------------------+ | 2017-03-04 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에도 1주일이 더해진 결과를 확인할 수 있습니다.
MONTH(월)
MONTH 단위는 현재 날짜 또는 지정된 날짜에 특정 개월 수를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 1 MONTH; +------------------------+ | NOW()+INTERVAL 1 MONTH | +------------------------+ | 2017-11-28 18:49:31 | +------------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 1개월을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Month; +------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Month | +------------------------------------------+ | 2017-03-25 05:04:30 | +------------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 1개월이 더해진 결과입니다.
QUARTER(분기)
QUARTER 단위는 현재 날짜 또는 지정된 날짜에 특정 분기(1분기 = 3개월)를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 1 QUARTER; +--------------------------+ | NOW()+INTERVAL 1 QUARTER | +--------------------------+ | 2018-01-28 18:49:41 | +--------------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 1분기, 즉 3개월을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 2 Quarter; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 2 Quarter | +--------------------------------------------+ | 2017-08-25 05:04:30 | +--------------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 2분기, 즉 6개월이 더해진 결과입니다.
YEAR(년)
YEAR 단위는 현재 날짜 또는 지정된 날짜에 특정 연도를 더하거나 뺄 때 사용합니다.
mysql> Select NOW()+INTERVAL 1 YEAR; +-----------------------+ | NOW()+INTERVAL 1 YEAR | +-----------------------+ | 2018-10-28 18:49:48 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 현재 날짜와 시간에 1년을 더하는 예제입니다.
mysql> Select '2017-02-25 05:04:30' + INTERVAL 2 Year; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 2 Year | +-----------------------------------------+ | 2019-02-25 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
지정된 날짜와 시간에 2년이 더해진 결과입니다.
마무리
이처럼 MySQL의 INTERVAL 키워드는 MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 등 다양한 단위 값을 지원하여 날짜와 시간 연산을 손쉽게 처리할 수 있게 해줍니다. 각 단위는 단독으로 사용할 수 있으며, 필요에 따라 덧셈(+)과 뺄셈(-) 연산자와 조합하여 유연하게 활용할 수 있습니다.