2011-10-17 10 views
8

私は、クエリの結果が次のようなクエリを持っています。複数の日時の値の合計を取得するにはどうすればよいですか?

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

各タイトルについて、DURATIONは異なります。クエリは以下を返します。

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 

これらの値の合計が必要です。どうすれば入手できますか?

答えて

14

秒に分

SUM()

は、次のことがあなたの秒のSUMを与えるバック分


に変換する変換:

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

次それがに変わりますオブジェクト:

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

それとも1つのクエリとして:

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

あなたは時間を合計することはできません。代わりに、秒パラメータを使用して開始日と終了日を指定してDateDiff関数を使用します。これにより、SUMでデータ型を返すことができます。完了したら、それをDateTimeに変換して、時:分:秒のようにフォーマットします。

関連する問題