将时间格式(hh:mm)转换为十进制格式

时间:2019-05-01 06:14:31

标签: db2

我通过减去格式为hh:mm(00:21)的时间字段来获取小时数 通过使用这个 rtrim(char(TIMESTAMPDIFF(8,char(LABTRANS.finishtime-LABTRANS.starttime)))))|| ':'|| rtrim(char(mod(int(TIMESTAMPDIFF(4,char(LABTRANS.finishtime-LABTRANS.starttime))),60))))作为total_time, ),但我必须显示十进制值(0.3500)。我该怎么做到。

请参阅我的示例表: ->创建表labtrans(starttime TIME,finishtime TIME) ->插入labtrans(starttime,finishtime) 值('08:02 Am','08:42 Am'), ('07:02 Am','08:42 Am'), ('01:02 pm','09:02 PM'), ('06:02 Am','08:00 Am')

2 个答案:

答案 0 :(得分:0)

这完全有帮助吗?

values hour(current time) + .01 * minute(current time)

返回

1               
----------------
           10.14

  1 record(s) selected.

答案 1 :(得分:0)

在Db2中减去TIME列时,结果为DEC(6,0),格式为:HHMMSS(持续时间)。
有关详细信息,请参见Time arithmetic主题。
因此,如果您需要以time duration格式表示HH+MM/60,则可以使用以下代码:

select 
  starttime, finishtime
, finishtime-starttime hhmmss
, int(finishtime-starttime)/10000
+ dec(mod((finishtime-starttime)/100, 100), 27)/60 as "hh+mm/60"
from labtrans

结果是:

STARTTIME   FINISHTIME  HHMMSS   hh+mm/60
---------   ----------  ------   --------
08:02:00    08:42:00      4000     0.6666
07:02:00    08:42:00     14000     1.6666
13:02:00    21:02:00     80000     8.0000
06:02:00    08:00:00     15800     1.9666