如何获得多个日期时间值的总和?

时间:2011-10-17 12:10:49

标签: sql-server tsql datetime sum

我有一个查询,结果是查询的结果是:

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

我需要这些值的总和;我怎么能得到它?

2 个答案:

答案 0 :(得分:15)

将分钟转换为秒

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 :(得分:1)

你无法总结时间。你应该做的是使用DateDiff函数和你的开始和结束时间使用seconds参数。这将返回一个整数数据类型,您可以在其中进行SUM。完成后,将其转换为DateTime,将其格式化为小时:分钟:秒。