网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle体系框架及SQL语句性能探讨.
.使用配置文件创建口令管理策略.
.快速解决Oracle数据库10g导出错误.
.一条SQL语句.
.Oracle rac安装过程详解(九).
.ORACLE数据库PROC编程经验介绍.
.oracle 优化方法.
.Oracle9i的管理方面的一些新特性.
.Oracle中忘记System和Sys密码后的.
.Oracle9i RMAN备份及恢复步骤.
.如何在一台机子上配双网卡.
.如何使用Oracle数据库中空间管理.
.Sql*plus技巧之SPOOL应用.
.网友经验谈之Oracle外部程序触发.
.standby利用并行恢复提高归档恢复.
.如何才能使用查询改写提高查询性.
.Oracle内存结构(二)----Shared P.
.在存储过程中做简单动态查询代码.
.ORACLE性能诊断―学习statspack笔.
.UNIX和WINDOWS2000上的ORACLE的差.

在Oracle9i中计算时间差

发表日期:2008-2-9



  计算时间差是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)系统级触发机制来计算已经开始的会话时间并把它放入一个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;
上一篇:Oracle并行服务器(OPS)经典FAQ12问 人气:485
下一篇:充分利用自动撤销管理的优点 人气:541
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐