有个需求,是根据给定的秒数,来生成多少小时多少分多少秒。比如给你一个2000秒,生成 '0小时33分20秒'
本来是在项目的数据库中写的sql。但是为了便于灵活使用,我写了一个存储过程,在我本地是测试通过了的。先上代码:
create or replace procedure test(NODE_CL_TIME IN number,str out varchar2) is
begin
select case when NODE_CL_TIME < 60 then
'0小时' || '0分' || NODE_CL_TIME || '秒'
when NODE_CL_TIME >= 60 and NODE_CL_TIME <= 3600 then
'0小时' || floor(NODE_CL_TIME / 60) || '分' ||
(NODE_CL_TIME - (floor(NODE_CL_TIME / 60) * 60)) || '秒'
when NODE_CL_TIME > 3600 then
floor(NODE_CL_TIME / 3600) || '小时' ||
floor((NODE_CL_TIME - (floor(NODE_CL_TIME / 3600) * 3600)) / 60) || '分' ||
NODE_CL_TIME - (floor(NODE_CL_TIME / 3600) * 3600) -
(floor((NODE_CL_TIME - (floor(NODE_CL_TIME / 3600) * 3600)) / 60) * 60) || '秒'
else
'0'
end into str
from DUAL;
end test;
这个存储过程接收一个参数,number类型的,然后返回一个varchar2类型的字符串。判断了三种情况,小于60秒,大于等于60并小于等于3600秒,大于3600秒。