Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara meringkas bidang waktu di SQL Server

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

Anda dapat memformatnya dengan cantik di bagian depan. Atau di 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;

Namun, Anda menggunakan tipe data yang salah. TIME digunakan untuk menunjukkan titik waktu, bukan interval atau durasi. Bukankah masuk akal untuk menyimpan jam kerja mereka di dua kolom berbeda, StartTime dan EndTime ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan koordinat pembatas untuk kode pos (zip) AS?

  2. Mengapa kita selalu lebih suka menggunakan parameter dalam pernyataan SQL?

  3. Memotong biaya lisensi SQL Server

  4. Bagaimana cara mengaktifkan MSDTC di SQL Server?

  5. Kelola Konkurensi Transaksi Menggunakan Kunci di SQL Server