MySQL - Operator INTERVAL

Xin chào các bạn, những法师 cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của toán tử INTERVAL trong MySQL. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng khám phá chủ đề này từng bước một. Vậy, hãy lấy một tách cà phê, và cùng nhau lặn vào!

MySQL - INTERVAL Operator

什么是INTERVAL Operator?

Trước khi chúng ta đi vào chi tiết, hãy hiểu INTERVAL operator là gì. Hãy tưởng tượng bạn đang lên kế hoạch cho một bữa tiệc, và bạn muốn biết ngày nào sẽ là 3 ngày từ bây giờ. Toán tử INTERVAL trong MySQL giống như một trợ lý du hành thời gian cá nhân của bạn, giúp bạn thực hiện các phép toán ngày và giờ một cách dễ dàng.

Cú pháp cơ bản

Cú pháp cơ bản của toán tử INTERVAL trông như thế này:

date_or_datetime + INTERVAL expression unit

hoặc

date_or_datetime - INTERVAL expression unit

Ở đây, date_or_datetime là điểm bắt đầu của bạn, expression là một số, và unit là đơn vị thời gian (như DAY, MONTH, YEAR, v.v.).

Sử dụng toán tử INTERVAL

Hãy bắt đầu với một số ví dụ đơn giản để làm quen.

Thêm ngày vào một ngày

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

Truy vấn này sẽ trả về:

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

Điều gì đang xảy ra ở đây? Chúng ta bắt đầu từ ngày 15 tháng 5 năm 2023, và thêm 5 ngày vào đó. MySQL thực hiện phép toán cho chúng ta và cho ra ngày 20 tháng 5 năm 2023. Thật tuyệt vời phải không?

Trừ tháng từ một ngày

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

Kết quả:

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

Trong ví dụ này, chúng ta đang quay ngược thời gian! Chúng ta bắt đầu từ ngày 15 tháng 5 năm 2023, và quay ngược 2 tháng, dừng lại ở ngày 15 tháng 3 năm 2023.

Các ví dụ phức tạp hơn

Bây giờ chúng ta đã có cơ bản, hãy thử một điều gì đó khó khăn hơn.

Kết hợp nhiều Interval

Bạn có thể sử dụng nhiều biểu thức INTERVAL trong một truy vấn duy nhất. Hãy nói bạn muốn biết ngày nào sẽ là 1 năm, 3 tháng và 5 ngày từ bây giờ:

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

Truy vấn này lấy ngày hiện tại (CURDATE()), sau đó thêm 1 năm, 3 tháng và 5 ngày vào đó. Đó giống như lên kế hoạch cho một hạn chót dự án dài hạn!

Làm việc với thời gian

Toán tử INTERVAL không chỉ dành cho ngày - nó cũng hoạt động với thời gian! Hãy thêm 2 giờ và 30 phút vào thời gian hiện tại:

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

Điều này rất tuyệt vời để tính toán khi chương trình truyền hình yêu thích của bạn sẽ kết thúc hoặc khi pizza giao hàng của bạn sẽ đến!

Ứng dụng thực tế

Bây giờ, hãy nhìn vào một số tình huống thực tế nơi toán tử INTERVAL có thể rất hữu ích.

Tính toán ngày đến hạn

Hãy tưởng tượng bạn đang xây dựng một hệ thống quản lý thư viện. Sách thường được mượn trong 14 ngày. Dưới đây là cách bạn có thể tính toán ngày đến hạn:

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

Truy vấn này sẽ cho bạn một danh sách các sách, ngày mượn và ngày đến hạn - tất cả đều được tính toán tự động!

Ngày gia hạn thuê bao

Nếu bạn đang làm việc trên một dịch vụ thuê bao, bạn có thể cần tính toán khi nào mỗi thuê bao sẽ gia hạn:

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

Truy vấn này giúp bạn theo dõi khi nào mỗi thuê bao hàng tháng sẽ gia hạn.

Sử dụng INTERVAL trong các mệnh đề WHERE

Toán tử INTERVAL không chỉ dành cho các câu lệnh SELECT - bạn có thể sử dụng nó trong các mệnh đề WHERE!

Tìm kiếm các đơn hàng gần đây

Hãy nói bạn muốn tìm tất cả các đơn hàng đặt trong 7 ngày qua:

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

Truy vấn này sẽ trả về tất cả các đơn hàng có order_date nằm trong tuần qua.

Xác định các sự kiện sắp tới

Nếu bạn đang quản lý một cơ sở dữ liệu sự kiện, bạn có thể muốn tìm tất cả các sự kiện diễn ra trong 30 ngày tới:

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

Truy vấn này sẽ cho bạn một danh sách tất cả các sự kiện sắp tới trong tháng tới.

Đơn vị của toán tử INTERVAL

Toán tử INTERVAL hỗ trợ nhiều đơn vị thời gian khác nhau. Dưới đây là bảng tất cả các đơn vị có sẵn:

Đơn vị Mô tả
MICROSECOND Microseconds (1/1,000,000 của một giây)
SECOND Giây
MINUTE Phút
HOUR Giờ
DAY Ngày
WEEK Tuần
MONTH Tháng
QUARTER Quarters (3 tháng)
YEAR Năm

Bạn có thể sử dụng bất kỳ đơn vị nào trong số này với toán tử INTERVAL để thực hiện các phép toán ngày và giờ chính xác.

Kết luận

Và thế là bạn đã có nó, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của toán tử INTERVAL trong MySQL, từ phép toán cơ bản đến các ứng dụng thực tế phức tạp hơn. Nhớ rằng, toán tử INTERVAL giống như một chiếc máy du hành thời gian cho cơ sở dữ liệu của bạn - nó cho phép bạn di chuyển.forward hoặc backward trong thời gian chỉ với một vài dòng SQL.

Thực hành là chìa khóa, vì vậy đừng ngần ngại thử nghiệm với các interval và đơn vị khác nhau. Trước khi bạn biết, bạn sẽ tính toán ngày và giờ như một chuyên gia!

Chúc các bạn may mắn trong việc lập trình, và mong rằng các truy vấn của bạn luôn trả về đúng giờ! ?

Credits: Image by storyset