Vấn đề:
Bạn có hai cột của loại ngày và bạn muốn tính toán sự khác biệt giữa chúng.
Ví dụ:
Trong travel bảng, có ba cột:id , departure và arrival . Bạn muốn tính toán sự khác biệt giữa arrival và departure , hoặc số ngày kể từ khi arrival khởi hành hoàn toàn.
travel bảng trông như thế này:
| id | khởi hành | đến |
|---|---|---|
| 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 |
Giải pháp:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
Kết quả là:
| id | khởi hành | đến | 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:
Để đếm sự khác biệt giữa các ngày trong MySQL, hãy sử dụng DATEDIFF(enddate, startdate) hàm số. Sự khác biệt giữa startdate và enddate được thể hiện bằng ngày. Trong trường hợp này, enddate là arrival và startdate là departure .
Tuy nhiên, trong hầu hết các trường hợp, điều bạn thực sự muốn là số ngày từ ngày đầu tiên đến ngày thứ hai hoàn toàn . Bạn cần thêm 1 ngày vào khoản chênh lệch:DATEDIFF(arrival, departure) + 1 .