sql >> Databáze >  >> RDS >> Sqlserver

Jak shrnout časové pole v SQL Server

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

Můžete to pěkně naformátovat na přední straně. Nebo v 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;

Používáte však nesprávný datový typ. TIME se používá k označení bodu v čase, nikoli intervalu nebo trvání. Nemělo by smysl ukládat jejich pracovní dobu do dvou odlišných sloupců, StartTime? a EndTime ?



  1. Jak uniknout vyhrazenému slovu v Oracle?

  2. Dotaz na dvě tabulky z jiného schématu

  3. Uživateli byl odepřen přístup Java JDBC

  4. Simple Encrypted Arithmetic Library (SEAL) a proměnná seal::Ciphertext