sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man summerar tidsfält i SQL Server

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

Du kan formatera det snyggt på fronten. Eller i 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;

Du använder dock fel datatyp. TIME används för att indikera en tidpunkt, inte ett intervall eller varaktighet. Skulle det inte vara vettigt att lagra sina arbetstimmar i två distinkta kolumner, StartTime och EndTime ?



  1. hur duplicerar jag mina sql-resultat?

  2. Hur man krypterar en lagrad procedur i SQL Server

  3. gem install pg kan inte binda till libpq

  4. Oracle UTL_SMTP:Skicka e-post med bilaga Exempel med Oracle Wallet-autentisering