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 và số ngày từ khi đến nơi đến khi khởi hành bao gồm .
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, JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference, JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive FROM travel;
Kết quả là:
| id | khởi hành | đến | date_difference | ngày |
|---|---|---|---|---|
| 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, hãy sử dụng JULIANDAY() hàm đếm số ngày kể từ buổi trưa ở Greenwich vào ngày 24 tháng 11 năm 4714 trước Công nguyên. Bạn sử dụng JULIANDAY(date) cho mỗi ngày trong hai ngày; chỉ cần trừ chúng bằng dấu trừ (-):
JULIANDAY(arrival) - JULIANDAY(departure)
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 bao gồm . Sau đó, bạn cần thêm 1 ngày vào chênh lệch số ngày:
JULIANDAY(arrival) - JULIANDAY(departure) + 1.