博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在oracle中计算时间差
阅读量:6860 次
发布时间:2019-06-26

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

计算时间差是oracle data数据类型的一个常见问题。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> select sysdate-(sysdate-3) from dual;


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系统级触发机制来计算已经开始的会话时间并把它放入一个oracle statspack user_log扩展表格之中。

update

perfstat.stats$user_log

set

elapsed_minutes =

round(to_number(logoff_time-logon_time)*1440)

where

user = user_id

and

elapsed_minutes is null;

转载地址:http://biayl.baihongyu.com/

你可能感兴趣的文章
大变样:Firefox新一代UI “Photon”设计曝光
查看>>
云计算、IoT和SDN为企业网带来最大的问题
查看>>
云趋势下的Windows平台:生存并快乐着
查看>>
不要再在JavaScript中写 CSS了
查看>>
Gartner:云安全进入高速发展期
查看>>
云存储能否成为数据安全灵药?几个角度全方位剖析
查看>>
未来几年SDN将进一步提升云服务利润率
查看>>
手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤
查看>>
Hinton亲自讲解迄今未发表工作:胶囊理论的核心概念到底是什么?
查看>>
公开课总结发布《云数据库实现原理和海量运维方法》
查看>>
预告:如何完成从学术科研到产业创新的华丽转身?| 硬创公开课
查看>>
《C++语言入门经典》一2.3 数据的输入与输出
查看>>
阿里云ECS通过docker配置MySQL--MGR
查看>>
光伏业需要一次国内“双反”
查看>>
小微企业都在用的一体化管理解决方案
查看>>
Sql Server 2008 为开发带来的新特性
查看>>
Realm为Node.js发布对象数据库
查看>>
农民别再愁!人工智能帮你诊断作物疾病
查看>>
物联网行业将掀起新一轮并购潮 步入整合期
查看>>
夏日炎炎 构筑安防线 这些知识你Get到了吗?
查看>>