网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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教程,数据库安全,数据库文摘
本月文章推荐
.最新Redhat Linux9 quota磁盘空间.
.如何使用DBMS_REPAIR检测和修补数.
.Oracle 数据库管理脚本命名.
.TestKing Oracle 1Z0-131 Edt5.0.
.SERVER数据转换ORACLE问题.
.浅谈权限管理的对象模型和实现.
.Oracle10g中新型层次查询选项简介.
.从SQL SERVER 向ORACLE 8迁移的技.
.用C++ 产生 SQL*Loader 各类文件.
.Oracle诊断案例-Job任务停止执行.
.Oracle基本知识.
.在ORACLE里设置访问多个SQL Serv.
.用Oracle9i保护你的电子商务.
.Oracle SQL性能优化系列讲座之三.
.逻辑备份与恢复实战.
.使用U盘,V盘,移动硬盘的终极方法.
.Oracle10g新增的用以简化用户管理.
.有时Oracle不用索引来查找数据的.
.Oracle 9i管理工具的使用.
.Linux环境下oracle9i的Dataguard.

在Oracle9i中Oracle DATA计算时间差

发表日期: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)系统级触发机制来计算已经开始的会话时间并把它放入一个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;

上一篇:详解Oracle分布式系统数据复制技术 人气:627
下一篇:Oracle数据库较好的十种重新启动步骤 人气:640
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐