Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách tính toán sự khác biệt giữa hai ngày trong T-SQL

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 , departurearrival . Bạn muốn tính toán sự khác biệt giữa arrivaldeparture , 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(day, departure, arrival) AS date_difference,
  DATEDIFF(day, departure, arrival) + 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:

Để tìm sự khác biệt giữa các ngày, hãy sử dụng DATEDIFF(datepart, startdate, enddate) hàm số. datepart đối số xác định phần ngày / giờ mà bạn muốn thể hiện sự khác biệt. Giá trị của nó có thể là year , quarter , month , day , minute , v.v. Trong ví dụ này, bạn muốn thể hiện sự khác biệt về ngày, vì vậy đối số đầu tiên là ngày. Hai đối số khác là ngày bạn bắt đầu đếm và ngày bạn ngừng đếm - Trong trường hợp này, departurearrival , tương ứng.

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 số ngày chênh lệch:DATEDIFF(day, departure, arrival) + 1 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lọc dữ liệu với JDBC RowSet

  2. Hekaton với một bước ngoặt:TVP trong bộ nhớ - Phần 1

  3. Hiểu 3 đặc điểm chính của Dữ liệu lớn

  4. Lập kế hoạch dung lượng đĩa cho cơ sở dữ liệu

  5. Cách sắp xếp theo thứ tự bảng chữ cái trong SQL