MySQL - INTERVAL 연산자

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 MySQL의 INTERVAL 연산자 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 나는 당신의 친절한 안내자가 될 것이며, 이 주제를 단계별로 탐구할 것입니다. 그러면 커피 한 잔을 손에 들고, 이제 뛰어들어 보겠습니다!

MySQL - INTERVAL Operator

INTERVAL 연산자는 무엇인가요?

자, 구체적인 내용에 들어가기 전에 INTERVAL 연산자가 무엇인지 이해해 보겠습니다. 당신이 파티를 계획하고, 오늘부터 3일 후가 언제인지 알고 싶다면 상상해 보세요. INTERVAL 연산자는 MySQL에서 날짜와 시간 계산을 쉽게 도와주는 개인적인 시간 여행 보조자와 같습니다.

기본 문법

INTERVAL 연산자의 기본 문법은 다음과 같습니다:

date_or_datetime + INTERVAL expression unit

또는

date_or_datetime - INTERVAL expression unit

여기서 date_or_datetime는 시작점이고, expression은 숫자이며, unit은 시간 단위(예: DAY, MONTH, YEAR 등)입니다.

INTERVAL 연산자 사용하기

이제 몇 가지 간단한 예제를 통해 발을 뺀다.

날짜에 일을 추가하기

SELECT DATE('2023-05-15') + INTERVAL 5 DAY AS future_date;

이 쿼리는 다음과 같은 결과를 반환합니다:

+-------------+
| future_date |
+-------------+
| 2023-05-20  |
+-------------+

여기서 무슨 일이 일어나고 있나요? 우리는 2023년 5월 15일에서 5일을 더해 2023년 5월 20일을 얻습니다. MySQL이 우리 대신 계산을 해주니까 정말 편리하죠?

날짜에서 월을 뺄하기

SELECT DATE('2023-05-15') - INTERVAL 2 MONTH AS past_date;

결과:

+-----------+
| past_date |
+-----------+
| 2023-03-15|
+-----------+

이 예제에서는 과거로 여행하는 것 같아요! 우리는 2023년 5월 15일에서 2개월을 뺀 후 2023년 3월 15일에 도착합니다.

더 복잡한 예제

이제 기본적인 내용을 이해했으므로, 조금 더 도전적인 것을 시도해 보겠습니다.

여러 개의 인터벌을 결합하기

한 개의 쿼리에서 여러 개의 INTERVAL 표현식을 사용할 수 있습니다. 예를 들어, 오늘부터 1년, 3개월, 5일 후의 날짜를 알고 싶다면:

SELECT CURDATE() + INTERVAL 1 YEAR + INTERVAL 3 MONTH + INTERVAL 5 DAY AS future_date;

이 쿼리는 현재 날짜(CURDATE())에 1년, 3개월, 5일을 더합니다. 마치 장기 프로젝트의 마감일을 계획하는 것처럼입니다!

시간과의 작업

INTERVAL 연산자는 날짜뿐만 아니라 시간에도 작동합니다! 현재 시간에 2시간과 30분을 더해 보겠습니다:

SELECT CURTIME() + INTERVAL 2 HOUR + INTERVAL 30 MINUTE AS future_time;

이것은 당신의 좋아하는 TV 쇼가 언제 끝날지 또는 피자 배달이 언제 도착할지 계산하는 데 완벽합니다!

실제 응용 사례

이제 INTERVAL 연산자가 매우 유용할 수 있는 몇 가지 실제 상황을 살펴보겠습니다.

연체 날짜 계산

상상해 보세요, 도서관 관리 시스템을 만들고 있습니다. 책은 일반적으로 14일 동안 빌려줍니다. 연체 날짜를 어떻게 계산할 수 있을까요?

SELECT
book_title,
checkout_date,
checkout_date + INTERVAL 14 DAY AS due_date
FROM book_loans;

이 쿼리는 책의 제목, 대출 날짜, 그리고 책이 돌려야 할 날짜를 자동으로 계산하여 반환합니다!

구독 갱신 날짜

구독 기반 서비스를 작업하고 있다면, 각 구독이 언제 갱신될지 계산할 필요가 있을 수 있습니다:

SELECT
user_name,
subscription_start,
subscription_start + INTERVAL 1 MONTH AS renewal_date
FROM subscriptions
WHERE subscription_type = 'monthly';

이 쿼리는 각 월간 구독이 언제 갱신될지 추적하는 데 도움이 됩니다.

WHERE 절에서 INTERVAL 사용하기

INTERVAL 연산자는 SELECT 문뿐만 아니라 WHERE 절에서도 사용할 수 있습니다!

최근 주문 찾기

마지막 7일 동안 주문된 모든 주문을 찾고 싶다면:

SELECT * FROM orders
WHERE order_date > CURDATE() - INTERVAL 7 DAY;

이 쿼리는 order_date가 최근 1주일 내에 있는 모든 주문을 반환합니다.

다가오는 이벤트 식별

이벤트 데이터베이스를 관리하고 있다면, 다음 30일 내에 일어날 모든 이벤트를 찾고 싶을 수 있습니다:

SELECT * FROM events
WHERE event_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 30 DAY;

이 쿼리는 다음 한 달 동안 일어날 모든 이벤트를 나열합니다.

INTERVAL 연산자 단위

INTERVAL 연산자는 다양한 시간 단위를 지원합니다. 다음 표는 가능한 모든 단위입니다:

단위 설명
MICROSECOND 마이크로초 (1/1,000,000초)
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER 분기 (3개월)
YEAR

이러한 단위 중任何一个를 INTERVAL 연산자와 함께 사용하여 정밀한 날짜와 시간 계산을 수행할 수 있습니다.

결론

이제 우리는 MySQL의 INTERVAL 연산자를 통해 기본적인 추가와 뺄셈에서 더 복잡한 실제 응용 사례까지 여행을 마친 것입니다. INTERVAL 연산자는 데이터베이스에서 시간 여행을 할 수 있는 기계처럼, 몇 줄의 SQL로 앞으로나 과거로 이동할 수 있게 합니다.

연습이 완벽을 만드는 것을 기억하시고, 다양한 인터벌과 단위를 실험해 보지 마세요. 얼마 지나지 않아 당신은 날짜와 시간을 계산하는 프로가 될 것입니다!

행복한 코딩을 하고, 쿼리가 항상 시간에 맞게 반환되길 바랍니다! ?

Credits: Image by storyset