将varchar转换为时间戳,然后按ticketid添加时间组

时间:2019-08-27 16:05:38

标签: sql db2

我需要将HH:MM:SS格式的包含时间的字符串值转换为时间戳,然后添加按票证编号分组的那些时间戳。我已经尝试了TIME函数,但是它们并没有太大帮助。

当前结果:

    TICKETID               WORKTIMETRACKING


       5141                  02:55:00
       5141                  00:00:00
       7856                  01:12:55
       7857                  00:07:00
       7857                  00:01:00

所需结果:

    TICKETID               WORKTIMETRACKING


       5141                  02:55:00
       7856                  01:12:55
       7857                  00:08:00

在当前结果中,我们具有相同的工单ID,但具有不同的工作时间跟踪,但我需要通过将时间总计(以timestampformat格式)来提取结果,如期望的结果所示(工单:7857,工作时间总计为00:08:00)

1 个答案:

答案 0 :(得分:1)

我们不能添加两个TIME值,即

db2 "values time('00:01:59') + time ('00:00:02')"
SQL0402N  The data type of an operand of an arithmetic function or operation 
"+" is invalid.  SQLSTATE=42819

因此,最简单的方法是使用MIDNIGHT_SECONDS scalar function

供您输入

db2 "create table tickets(ticketid int, worktimetracking varchar(10))"
db2 "insert into tickets values (5141, '02:55:00')"
db2 "insert into tickets values (5141, '00:00:00')"
db2 "insert into tickets values (7856, '01:12:55')"
db2 "insert into tickets values (7857, '00:07:00')"
db2 "insert into tickets values (7857, '00:01:00')"

您可以尝试以下操作:

db2 "select 
       ticketid, 
       time('00:00:00') + sum(midnight_seconds(time(worktimetracking))) seconds as total_time 
     from 
       tickets 
     group 
       by ticketid"

TICKETID    TOTAL_TIME
----------- ----------
       5141 02:55:00  
       7856 01:12:55  
       7857 00:08:00  

  3 record(s) selected.

这将一直保持不超过24小时,否则您将需要其他类型。