Trong bài viết sau đây, SmartData sẽ giới thiệu cho các bạn phương pháp tính khoảng thời gian giữa 2 mốc thời gian trong MySQL.
Tình Huống
Giả sử ta có 1 bảng travel, bao gồm các cột: id, departure, and arrival.
id | departure | arrival |
---|---|---|
1 | 2018-03-25 | 2018-04-05 |
2 | 2019-09-12 | 2019-09-23 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
Bạn muốn tính khoảng chênh lệch giữa 2 mốc arrival và departure, hoặc cả số ngày tổng thể từ lúc arrival đến lúc departure. Chúng ta viết câu truy vấn như sau:
SELECT
id,
departure,
arrival,
DATEDIFF(arrival, departure)
AS
date_difference,
DATEDIFF(arrival, departure) + 1
AS
days_inclusive
FROM
travel;
Kết quả thu được là:
id | departure | arrival | date_difference | days_inclusive |
---|---|---|---|---|
1 | 2018-03-25 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 2019-09-23 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
Thảo Luận
Để tính chênh lệch giữa 2 mốc thời gian trong MySQL, ta sử dụng hàm DATEDIFF(end_date, start_date). Khoảng chênh lệch giữa 2 mốc thời gian sẽ được tính theo đơn vị ngày. Trong trường hợp này, end_date là arrival và start_date là departure.
Trong hầu hết các trường hợp, giá trị bạn muốn thường là số ngày từ ngày đầu đến ngày kết thúc 1 cách tổng thể vì thế bạn cần +1 vào hàm DATEDIFF(end_date, start_date).
Tổng Kết
Qua bài viết trên, SmartData đã hướng dẫn cho các bạn cách tính khoảng thời gian giữa 2 mốc thời gian trong MySQL. Hi vọng có thể giúp các bạn có thêm các kiến thức mới và ứng dụng được vào công việc hằng ngày. Cảm ơn các bạn đã theo dõi.
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: