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

Tính tổng thời gian ở một địa điểm với ngày giờ của SQL Server

Những gì bạn cần làm là tính toán chênh lệch ngày giữa các vị trí mà thực thể đã dành thời gian, như bên dưới

SELECT
*
FROM MyTable

Giá trị kết quả

Starttime               Endtime                 LocationID  EntityID
2014-09-23 14:07:43     2014-09-23 16:07:43     2           2
2014-09-23 14:09:03     2014-09-23 20:09:03     3           2
2014-09-23 14:09:51     2014-09-23 21:09:51     8           2
2014-09-23 14:15:10     2014-09-23 21:15:10     8           3
2014-09-23 14:15:16     2014-09-23 17:15:16     8           3
2014-09-23 14:15:23     2014-09-23 22:15:23     4           3
2014-09-23 14:15:32     2014-09-23 15:15:32     5           3
2014-09-23 14:06:26     2014-09-23 14:06:26     1           2

Sử dụng truy vấn dưới đây để nhận được kết quả mong muốn

SELECT
    DATEDIFF(MINUTE, MIN(Starttime), MAX(Endtime)) TotalTimeSpentInMinutes,
    LocationID
FROM MyTable
WHERE EntityID = 2
GROUP BY LocationID

Giá trị kết quả sẽ là

TotalTimeSpentInMinutes LocationID
0                       1
120                     2
360                     3
420                     8


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cố gắng lấy tổng các giá trị riêng biệt cho các tệp riêng biệt cho các phiên bản phần mềm riêng biệt

  2. Loại dữ liệu do người dùng xác định và bảng #temp

  3. Sử dụng Vòng lặp Trong khi để Cập nhật Máy chủ SQL

  4. Có thể sử dụng hàm Tổng hợp trong trạng thái Chọn mà không sử dụng mệnh đề Nhóm theo không?

  5. Đầu ra cơ sở dữ liệu không mong muốn khi sử dụng INNER JOIN