在sql中计算/求和时间戳

时间:2014-02-21 09:44:39

标签: sql db2-luw

我在计算时间戳时遇到困难,如何在不同的时间戳上计算/求和,如下所示

Time (Timestamp in one column)
***********************
0:00:01
0:00:08
0:00:12
0:00:38
0:01:04
2:04:49
15:48:38
23:30:59
7:05:52
8:17:29

我想在hh:mi中显示总和(时间戳)。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

我可以在postgresql中告诉你,你可以这样做

postgres=# select time '05:00' - time '03:00';
 ?column? 
----------
 02:00:00
(1 row)

不知道这对你有多大帮助

答案 1 :(得分:0)

当添加的值为TIME列时,此示例适用于DB2(如原始问题中所示)。诀窍是将时间转换为经过的秒数,这更容易加起来。

WITH origTbl (origTime) AS (VALUES
( TIME( '0:00:01' ) ),
( TIME( '0:00:08' ) ),
( TIME( '0:00:12' ) ),
( TIME( '0:00:38' ) ),
( TIME( '0:01:04' ) ),
( TIME( '2:04:49' ) ),
( TIME( '15:48:38' ) ),
( TIME( '23:30:59' ) ),
( TIME( '7:05:52' ) ),
( TIME( '8:17:29' ) )
)
,
totSeconds( secs ) AS (
SELECT SUM( MIDNIGHT_SECONDS( origTime ) ) 
FROM origTbl
)
SELECT RTRIM( CHAR( secs/3600 ) ) || ':' || 
LPAD( RTRIM( CHAR( MOD(secs, 3600)/60 ) ), 2, '0' ) || ':' ||
LPAD( RTRIM( CHAR( MOD(secs, 60) ) ), 2, '0' ) AS totHMMSS FROM totSeconds
;

TOTHMMSS
-----------------
56:49:50

  1 record(s) selected.