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

Cách tổng hợp trường thời gian trong SQL Server

SELECT EmployeeID, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs)) 
FROM dbo.table 
-- WHERE ...
GROUP BY EmployeeID;

Bạn có thể định dạng nó khá đẹp trên giao diện người dùng. Hoặc trong T-SQL:

;WITH w(e, mw) AS
(
    SELECT EmployeeID, SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs)) 
    FROM dbo.table 
    -- WHERE ...
    GROUP BY EmployeeID
)
SELECT EmployeeID = e,
  WrkHrs = RTRIM(mw/60) + ':' + RIGHT('0' + RTRIM(mw%60),2)
  FROM w;

Tuy nhiên, bạn đang sử dụng sai kiểu dữ liệu. TIME được sử dụng để chỉ một điểm trong thời gian, không phải khoảng thời gian hoặc khoảng thời gian. Sẽ không hợp lý nếu lưu trữ giờ làm việc của họ trong hai cột riêng biệt, StartTimeEndTime ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng SQL Server làm hàng đợi DB với nhiều máy khách

  2. Mã xác thực SQL Scripts

  3. Nhận hàng cập nhật

  4. Di chuyển dữ liệu SQL từ bảng này sang bảng khác

  5. Loại bỏ các giá trị trùng lặp chỉ dựa trên một cột của bảng