2011-10-17 44 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()

转换回分钟


下面会给你秒的总和:

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

那么下面将其变成datetime对象:

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函数,在你的开始和结束时间使用秒参数。这将返回一个整数数据类型,您可以在其上。完成后,将其转换为DateTime以将其格式化为小时:分钟:秒。

相关问题