中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > Oracle
在Oracle9i中Oracle DATA计算时间差
作者:佚名 时间:2007-06-19 15:20 出处:chinaitlab.com 责编:月夜寒箫
              摘要:在Oracle9i中Oracle DATA计算时间差

计算时间差是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)- 消逝的时间(以分钟为单位)。

 

显示时间差的默认模式是什么?为了找到这个问题的答案,让我们进行一个简单的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)系统级触发机制来计算已经开始的会话时间并把它放入一个OracleSTATSPACK 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;
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有