Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL NOW() 및 CURDATE() 함수에서 INTERVAL 키워드 활용 방법

MySQL의 INTERVAL 키워드는 날짜 값의 시간(time), 날짜(date), 날짜시간(datetime) 단위와 함께 사용할 수 있으며, NOW()CURDATE() 함수와도 동일한 방식으로 활용할 수 있습니다.

INTERVAL 키워드를 사용하면 현재 시점을 기준으로 특정 기간만큼 더하거나 뺀 값을 손쉽게 계산할 수 있습니다. 이는 일정 관리, 만료일 계산, 로그 필터링 등 실무에서 매우 유용하게 쓰입니다.

NOW() 함수에 INTERVAL 적용하기

NOW() 함수는 현재 날짜와 시간을 반환하므로, INTERVAL과 함께 사용하면 현재 시각 기준의 과거 또는 미래 시점을 구할 수 있습니다.

mysql> Select NOW() + INTERVAL 2 day;
+------------------------+
| NOW() + INTERVAL 2 day |
+------------------------+
| 2017-10-30 09:19:31    |
+------------------------+
1 row in set (0.00 sec)

mysql> Select NOW() - INTERVAL 2 day;
+------------------------+
| NOW() - INTERVAL 2 day |
+------------------------+
| 2017-10-26 09:19:45    |
+------------------------+
1 row in set (0.00 sec)

mysql> Select NOW() - INTERVAL 2 hour;
+-------------------------+
| NOW() - INTERVAL 2 hour |
+-------------------------+
| 2017-10-28 07:19:51     |
+-------------------------+
1 row in set (0.00 sec)

위 예제에서 확인할 수 있듯이, + INTERVAL 2 day는 현재 시각에서 2일 후를, - INTERVAL 2 day는 2일 전을, - INTERVAL 2 hour는 2시간 전의 날짜시간 값을 반환합니다.

CURDATE() 함수에 INTERVAL 적용하기

CURDATE() 함수는 시간 정보 없이 현재 날짜만 반환합니다. 따라서 INTERVAL과 함께 사용하면 날짜 단위의 계산 결과를 얻을 수 있습니다.

mysql> Select CURDATE() - INTERVAL 2 day;
+----------------------------+
| CURDATE() - INTERVAL 2 day |
+----------------------------+
| 2017-10-26                 |
+----------------------------+
1 row in set (0.00 sec)

mysql> Select CURDATE() + INTERVAL 2 day;
+----------------------------+
| CURDATE() + INTERVAL 2 day |
+----------------------------+
| 2017-10-30                 |
+----------------------------+
1 row in set (0.00 sec)

결과에서 볼 수 있듯이 CURDATE()와 INTERVAL을 조합하면 시간 없이 순수한 날짜(date) 값으로 결과가 출력됩니다.

활용 가능한 INTERVAL 단위

INTERVAL 키워드에는 다음과 같은 다양한 시간 단위를 사용할 수 있습니다.

  • MICROSECOND(마이크로초)
  • SECOND(초), MINUTE(분), HOUR(시간)
  • DAY(일), WEEK(주), MONTH(월), QUARTER(분기), YEAR(년)
  • 복합 단위: DAY_HOUR, DAY_MINUTE, DAY_SECOND, HOUR_MINUTE, HOUR_SECOND, MINUTE_SECOND 등

정리

NOW()는 날짜와 시간을 모두 포함한 datetime 값을 반환하고, CURDATE()는 날짜만 반환한다는 차이가 있습니다. 두 함수 모두 INTERVAL 키워드와 결합하면 덧셈(+)과 뺄셈(-) 연산자를 통해 과거나 미래의 특정 시점을 간편하게 계산할 수 있어, SQL 쿼리 내에서 날짜 연산을 처리할 때 매우 편리합니다.