秒转为时分秒的oracle函数

create or replace function GETTIMEDESC(seconds in integer) return  varchar2 is
  Result varchar2(100);
begin
  Result := '1t';
  
  if (seconds<24*3600) then
      select to_char(to_date(mod(seconds,3600*24),'sssss'),'fmhh24"小时"mi"分"ss"秒"') into Result from dual;
  else  
      select trunc(seconds/3600/24) || '天' || to_char(to_date(mod(seconds,3600*24),'sssss'),'fmhh24"小时"mi"分"ss"秒"') into Result from dual; 
  end if;
  
  return(Result);
end GETTIMEDESC;


这个函数没有太多的技术含量,记录下来。网上找了好久,后来也是看一个答案,稍加改造而来


调用sql语句 select  GETTIMEDESC(500000) m from dual; 


好像又回去了,写来写去,感觉很简单,但是网上就没有这个现成的答案,简单是事情我来做。

 

调试了好久,发现上面的写法是有问题的,换个写法,搞了好久,实在是不成了,只好整个笨办法,麻烦点,但肯定是对的。

create or replace function GETTIMEDESC(seconds in number) return  varchar2 is
  Result varchar2(100);
  --DaySeconds number;
  TempSconds number;
begin
  Result := '';
  
  --DaySeconds := 24*3600;
  TempSconds := seconds;
  
  if (seconds is null) then
     return '';
  end if;
  
  --天数
  if (seconds>=86400) then
      Result := round(seconds/86400) || '天';
      TempSconds := mod(seconds,86400);
  else
     Result := '0天';
  end if;
  
  --小时
  if (TempSconds>=3600) then
      Result := Result || round(TempSconds/3600) || '小时';
      TempSconds := mod(TempSconds,3600);
   else
      Result := Result || '0小时';
   end if;
   
   --分钟
  if (TempSconds>=60) then
      Result := Result || round(TempSconds/60) || '分钟';
      TempSconds := mod(TempSconds,60);
  else
     Result := Result || '0分钟';
  end if;
  
  Result := Result || to_char(round(TempSconds)) || '秒';
  
  return(Result);
  
end GETTIMEDESC;

 

对自己来说是个记录,希望对需要的人能或多或少地帮助一点点

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值