设为首页 收藏本站
查看: 773|回复: 0

[经验分享] Oracle中计算两个时间的时间差:

[复制链接]
YunVN网友  发表于 2016-8-13 07:32:46 |阅读模式
  计算时间差是oracledata数据类型的一个常见问题。oracle支持日期计算,你可以创建诸如“日期1-日期2”这样的表达式来计算这两个日期之间的时间差。一旦你发现了时间差异,你可以使用简单的技巧来以天、小时、分钟或者秒为单位来计算时间差。为了得到数据差,你必须选择合适的时间度量单位,这样就可以进行数据格式隐藏。
  

  使用完善复杂的转换函数来转换日期是一个诱惑,但是你会发现这不是最好的解决方法。
round(to_number(end-date-start_date))-消逝的时间(以天为单位)

round(to_number(end-date-start_date)*24)-消逝的时间(以小时为单位)

round(to_number(end-date-start_date)*1440)-消逝的时间(以分钟为单位)K7zR{{-:W[本资料来源于贵州学习网http://www.gzu521.com]K7zR{{-:W
显示时间差的默认模式是什么?为了找到这个问题的答案,让我们进行一个简单的sql*plus查询。
sql>selectsysdate-(sysdate-3)fromdual;

sysdate-(sysdate-3)
-------------------
3

  这里,我们看到了oracle使用天来作为消逝时间的单位,所以我们可以很容易的使用转换函数来把它转换成小时或者分钟。然而,当分钟数不是一个整数时,我们就会遇到放置小数点的问题。
select
(sysdate-(sysdate-3.111))*1440
from
dual;


(sysdate-(sysdate-3.111))*1440
------------------------------
4479.83333

  当然,我们可以用round函数(即取整函数)来解决这个问题,但是要记住我们必须首先把date数据类型转换成number数据类型。
select
round(to_number(sysdate-(sysdate-3.111))*1440)
from
dual;

round(to_number(sysdate-(sysdate-3.111))*1440)
----------------------------------------------
4480

  我们可以用这些函数把一个消逝时间近似转换成分钟并把这个值写入oracle表格中。在这个例子里,我们有一个离线(logoff)系统级触发机制来计算已经开始的会话时间并把它放入一个oraclestatspackuser_log扩展表格之中。
update
perfstat.stats$user_log
set
elapsed_minutes=
round(to_number(logoff_time-logon_time)*1440)
where
user=user_id
and
elapsed_minutesisnull;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257160-1-1.html 上篇帖子: oracle 10g/11g RAC 启停归档模式 下篇帖子: ORACLE数值类型的性能优化技巧number,Int,float
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表