在Oracle中如何在求和后将数据类型Number转换为dd:hh:mm:ss

在Oracle中如何在求和后将数据类型Number转换为dd:hh:mm:ss,oracle,Oracle,在Oracle中进行求和后,我尝试将数值(数据类型-Number)转换为dd:hh:mm:ss。例如,我有一个表,其中的值如下所示。这里的值存储为秒 ID Value ---------------------- 001 125698 002 5698233 001 896398233 从上面的值中,我想求ID001的和值,并将其转换为dd:hh:mm:ss。我该怎么办?请帮忙 不幸的是,没有简单的方法来推导这个公式。但是,我们可以通过混合应用floor()和mod()调用来计算天、

在Oracle中进行求和后,我尝试将数值(数据类型-
Number
)转换为
dd:hh:mm:ss
。例如,我有一个表,其中的值如下所示。这里的值存储为秒

ID   Value
----------------------
001  125698
002  5698233
001  896398233

从上面的值中,我想求ID001的和值,并将其转换为dd:hh:mm:ss。我该怎么办?请帮忙

不幸的是,没有简单的方法来推导这个公式。但是,我们可以通过混合应用
floor()
mod()
调用来计算天、小时、分钟和秒,如下所示:

select id
       , value
       , floor(value / 86400) as days
       , floor(mod(value, 86400) / 3600) as hours
       , floor(mod(value, 3600) / 60) as mins
       , mod(value, 60) as secs
from your_table
也许你会发现这个函数很有用。示例(Oracle 11g)

我想对ID 001的值求和,并将其转换为dd:hh:mm:ss

您可以从结果中选择天/小时/分钟/秒,并使用串联运算符添加一些“:”字符

select
  extract( day from interval_ )    || ':' ||
  extract( hour from interval_ )   || ':' ||
  extract( minute from interval_ ) || ':' ||
  extract( second from interval_ ) dhms
from (
  select 
    numtodsinterval( sum( value_ ), 'second' ) interval_
  from numbers
  where id_ = '001'
)
;

-- result
DHMS            
10376:10:25:31

另请参见:

您需要解释这个数字的含义。
select 
  numtodsinterval( sum( value_ ), 'second' ) 
from numbers
where id_ = '001'
;

-- result
NUMTODSINTERVAL(SUM(VALUE_),'SECOND')  
+10376 10:25:31.000000 
select
  extract( day from interval_ )    || ':' ||
  extract( hour from interval_ )   || ':' ||
  extract( minute from interval_ ) || ':' ||
  extract( second from interval_ ) dhms
from (
  select 
    numtodsinterval( sum( value_ ), 'second' ) interval_
  from numbers
  where id_ = '001'
)
;

-- result
DHMS            
10376:10:25:31