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

Tính Tổng ngày giờ trong HH:MM:SS theo sql

Tôi nghĩ rằng bạn muốn chuyển đổi sang thời gian (hoặc ngày giờ nếu phiên bản SQL Server của bạn không hỗ trợ nó), thay vì varchar.

Nhưng, đây là một cách rất tệ để làm điều này. 25:01:01 sẽ không phải là ngày giờ hợp lệ. Bạn nên tính tổng số giây (như được gợi ý trong một câu trả lời khác), sau đó định dạng kết quả theo ý muốn ở cuối.

Vì vậy, trong truy vấn đầu tiên của bạn, hãy bao gồm một cột khác có thời lượng tính bằng giây:

, DateDiff(s,[Start Date] , [End Date]) as [Ticket Type Seconds]

Sau đó, trong truy vấn thứ hai, chỉ cần định dạng SUM ([Giây Loại vé]), có lẽ như thế này:

STR(SUM([Ticket Type Seconds])/3600) 
+ RIGHT(CONVERT(char(8),DATEADD(s,SUM([Ticket Type Seconds]),0),108),6)

Điều đó cung cấp cho bạn số giờ (có thể nhiều hơn 24), được nối với phần ':MM:SS' của ngày giờ mà bạn nhận được khi chuyển đổi giây (được thêm vào 0 ngày:19000101 00:00:00) thành ngày giờ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều hàng thành một hàng và kết hợp SQL cột

  2. Các phương pháp hay nhất để tuần tự hóa DateTime trong .NET 3.5

  3. Cách truy vấn các hàng có giá trị cột cao nhất trong số các hàng có cùng giá trị cho một trong các cột

  4. Cách tạo Ràng buộc Duy nhất trên Cột cho Bảng đã tồn tại - Hướng dẫn SQL Server / TSQL Phần 97

  5. Các ký tự lẻ hiển thị bảng nhỏ sau khi sử dụng tableDiff