在Oracle中如何在求和后将数据类型Number转换为dd:hh:mm:ss
在Oracle中进行求和后,我尝试将数值(数据类型-在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()调用来计算天、
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