ORCL [orcler] 计算两个时间的差 用时分秒格式展示

使用场景:一般用于两个时间之间的耗时。如图结束时间为空即使用系统时间。

第一步、写一个转换函数 这个函数的目的是将两个时间差的秒数 转为 x天x时x分x秒。

create or replace function GETTIMEDESC(seconds in number) return  varchar2 is
  Result varchar2(100);
  --DaySeconds number;   将xxx秒 转为 x天x时x分x秒
  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(replace(Result,'0天',''));
  
end GETTIMEDESC;

第二步、调用函数转换,实例如下。

1)、借用表查询展示

表字段1 business_start_time    date           业务开始时间

表字段2 business_end_time     date           业务结束时间

 SELECT BUSINESS_START_TIME 开始时间, --开始时间
        BUSINESS_END_TIME 结束时间, --结束时间
        ROUND(TO_NUMBER(NVL(BUSINESS_END_TIME, SYSDATE) - BUSINESS_START_TIME) * 24 * 60 * 60) 秒数差, --结束时间-开始时间得到秒数差
        GETTIMEDESC(ROUND(TO_NUMBER(NVL(BUSINESS_END_TIME, SYSDATE) - BUSINESS_START_TIME) * 24 * 60 * 60)) 时间差 --调用函数转换
   FROM STS_EVENT;

2)、借用dual来展示

SELECT TO_DATE('2019/5/20 14:32:26', 'yyyy-MM-dd hh24:mi:ss') 结束时间, --结束时间 
       TO_DATE('2019/5/20 10:23:01', 'yyyy-MM-dd hh24:mi:ss') 开始时间, --开始时间
       TO_NUMBER(TO_DATE('2019/5/20 14:32:26', 'yyyy-MM-dd hh24:mi:ss') -
       TO_DATE('2019/5/20 10:23:01', 'yyyy-MM-dd hh24:mi:ss')) * 24 * 60 * 60 秒数差,
    --秒数差=(结束时间-开始时间)* 24 * 60 * 60 GETTIMEDESC(TO_NUMBER(TO_DATE('2019/5/20 14:32:26', 'yyyy-MM-dd hh24:mi:ss') -
    TO_DATE('2019/5/20 10:23:01', 'yyyy-MM-dd hh24:mi:ss')) * 24 * 60 * 60) 时间差 --调用函数将秒数转为时间 FROM DUAL;

完结。。。完美解决。

 

 



转载于:https://www.cnblogs.com/xhxh/p/10911134.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值