博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORCL [orcler] 计算两个时间的差 用时分秒格式展示
阅读量:5293 次
发布时间:2019-06-14

本文共 2027 字,大约阅读时间需要 6 分钟。

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

第一步、写一个转换函数 这个函数的目的是将两个时间差的秒数 转为 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

你可能感兴趣的文章
获取元素样式信息于三中获取方式的区别
查看>>
测试主要环节
查看>>
08-17工作总结
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
基本高精度模板
查看>>
SqlBulkCopy大批量导入数据
查看>>
Windows Workflow Foundation 入门
查看>>
LaTeX 中图片格式错误情况
查看>>
Sublime Text 3 Build 3065 License key 注册码 秘钥
查看>>
AngularJS中transclude用法详解
查看>>
Sliding Menu Demos 浅析:Sliding Title Bar 与 Sliding Content Only
查看>>
java利用freemarker导出world
查看>>
简单的弹出拖拽窗口(二)
查看>>
LeetCode题解之 Assign Cookies
查看>>
第八周编程总结
查看>>
Java-----思想认识
查看>>
ASP.NET - TreeView控件,只操作最后一级节点
查看>>
设计模式示例系列随笔
查看>>
HTTP协议概述
查看>>
Available to Promise (ATP) in SAP-SD
查看>>