2011-10-17 36 views
8

Tôi có một truy vấn như vậy mà kết quả của truy vấn là:Làm cách nào tôi có thể nhận được tổng của nhiều giá trị ngày giờ?

SELECT CONVERT(VARCHAR(8),(MAX(END_TIME)-MIN(START_TIME)),108) as DURATION WHERE ... GROUP BY TITLE 

Đối với mỗi tiêu đề, DURATION là khác nhau. Truy vấn trả về:

DURATION 
00:16:14 
00:00:00 
00:01:30 
00:16:25 
00:09:34 
00:00:01 
01:04:04 
00:00:28 
00:00:12 
00:06:11 
00:26:38 
00:31:44 
00:02:16 
00:03:22 
00:09:39 
00:03:20 
00:03:43 
00:09:33 
00:08:05 
00:06:58 
00:25:29 
01:55:30 
00:03:02 
00:00:18 
00:06:09 
00:07:26 
00:25:43 
00:00:16 
00:26:58 
02:09:38 
00:57:56 
00:00:45 
00:00:00 
00:07:24 
00:00:54 
00:00:27 
00:01:28 
00:07:14 
00:00:19 
01:43:25 
00:58:23 
00:02:29 
02:19:48 
00:09:06 
05:12:15 
02:27:15 
00:56:47 
00:02:24 

Tôi cần tổng các giá trị này; Làm thế nào tôi có thể nhận được nó?

Trả lời

14

phút Chuyển đổi

SUM() giây

Chuyển đổi trở lại phút


Sau đây sẽ cung cấp cho bạn SUM giây:

SET @Seconds = SELECT SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME])) 

Sau đây rồi biến nó thành.210 đối tượng:

select convert(varchar(8), dateadd(second, @Seconds, 0), 108) 

Hoặc như 1 truy vấn:

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME])), 0), 108) 
1

Bạn không thể tính tổng số lần. Những gì bạn nên làm thay vì sử dụng chức năng DateDiff với thời gian bắt đầu và kết thúc của bạn bằng cách sử dụng tham số giây. Điều này sẽ trả về một kiểu dữ liệu số nguyên mà bạn có thể SUM trên. Khi bạn hoàn thành, chuyển đổi nó thành một DateTime để định dạng nó như giờ: phút: giây. vào giây

Các vấn đề liên quan