网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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 9i数据库中实体化视图简介.
.Oracle的翻页Sql语句.
.oracle数据库 exp/imp命令详解.
.在Oracle运行操作系统命令.
.Oracle数据库技术(3).
.SAP并购美国软件厂商 向甲骨文开.
.使用DBMS_SUPPORT包(zt).
.磁碟空间限制简易使用说明.
.在Oracle9i Release 2中使用PL/S.
.数据仓库产品综述.
.如何彻底删除一个数据库?.
.开启企业殿堂的钥匙 Oracle服务器.
.DOS 的使用者投向 Linux :介绍 0.
.Oracle DBA 回滚段管理试题选.
.在Oracle 9ias中如何显示存在Ora.
.Oracle 8i迁移到10g出现的问题及.
.TestKing Oracle 1Z0-147 Edt3.0.
.SQL Server和Oracle并行处理比较.
.Oracle环境下APACHE虚拟服务器如.
.我的oracle笔记六(oracle优化方.

如何掌握 Oracle 中的时间间隔型数据

发表日期:2008-2-9


    在9i 版本以前,Oracle 没有内置的方式来记录时间的流逝。DATE型数据用来记录单独的时间点;但是要表达一个时间量(也就是一个间隔),数据库的设计者就必须把时间间隔转换成原始单位秒,然后用一个NUMBER列来保存它。     虽然NUMBER这个数据类型可以以秒为单位准确地表示时间,但是它使得时间的计算变得很困难。比如,60秒是1分钟,60分钟是1个小时,24个小时等于1天——这些数字在以十进制为基础的数字系统中都是非常蹩脚的。     在Oracle 9i中,按照SQL 99标准,增加了时间间隔型数据INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND,它们和其他几种数据类型一起使得对时间的处理更加准确。TIMESTAMP、TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE等数据类型都把时间的表达精确到了若干分之一秒,而且后面两种还解决了地理位置造成的时间变化。     在SQL和PL/SQL中,你都可以用时间间隔型数据,它们都是用同一种方式规定的:     INTERVAL YEAR[(year_precision)] TO MONTH     INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]     对于精确数值,规定有缺省值:年和日是两位数,若干分之一秒是六位数。     时间间隔的大小由INTERVAL来表示,后面紧接一个放在单引号中的表达式,以及用来解释该表达式的文字。用YEAR TO MONTH表示时间间隔大小时要在年和月之间用一个连字符(-) 连接。而DAY TO SECOND表示时间间隔大小时要在日和时间之间用一个空格连接。举个例子来说,下面是2年6个月的时间间隔的表示方法:     INTERVAL '2-6' YEAR TO MONTH     下面的例子表示3天12个小时30分钟6.7秒:     INTERVAL '3 12:30:06.7' DAY TO SECOND(1)     时间间隔可以为正,也可以为负。它们可以从各种TIMESTAMP数据类型中加上或者减去,从而得到一个新的TIMESTAMP数据类型。它们之间也可以做加减运算得到新的时间间隔。     列表A说明了怎样创建一个表格来记录一个事件的开始时间和持续时间,如实验等。数据被收集以后,SQL中内置的摘要函数不需要与原始单位秒进行相互转换,就可以报告总的持续时间和平均持续时间。     列表A     CREATE TABLE eXPeriment     (experiment_id NUMBER(9),     experiment_desc VARCHAR2(80),     experiment_start TIMESTAMP,     experiment_duration INTERVAL DAY(1) TO SECOND(4)     );     Table created.     INSERT INTO experiment     VALUES (     1, 'Busted urban myth', '01-JUN-2006 02:00:00 PM',     INTERVAL '1 2:31:15.1250' DAY(1) TO SECOND(4)     );     1 row created.     col experiment_desc format a40     col experiment_start format a30     col experiment_duration format a20     SELECT * FROM experiment;     EXPERIMENT_ID EXPERIMENT_DESC —— —— EXPERIMENT_START EXPERIMENT_DURATION —— —— 1 Busted urban myth 01-JUN-06 02.00.00.000000 PM +1 02:31:15.1250     —— Now compute the experiment's ending time     SELECT experiment_id, experiment_start,     experiment_start + experiment_durationexperiment_end
    FROM experiment;     EXPERIMENT_ID EXPERIMENT_START —— —— EXPERIMENT_END —— 1 01-JUN-06 02.00.00.000000 PM 02-JUN-06 04.31.15.125000000 PM     但遗憾的是, TO_CHAR函数中没有包括任何能够映射到各个时间间隔数据类型片段的格式模型。但是,你可以用新的EXTRACT函数来提取和合并这些片段。格式如下:     EXTRACT(timepart FROM interval_expression)     列表B给出了一个运用这种方法的例子。     列表B     SELECT EXTRACT(DAY FROM experiment_duration)     ' days, ' EXTRACT (HOUR FROM experiment_duration)     ' hours, ' EXTRACT (MINUTE FROM experiment_duration)     ' minutes' Duration     FROM experiment;     DURATION --------------------------------------------------------------------------------     1 days, 2 hours, 31 minutes     首先,从experiment_duration列中将天数提取出来,文字“Days”是与之相联的。对于实验持续时间中的小时和分钟部分,操作与上述方法一样。
上一篇:面向开发人员的 Oracle 融合中间件 人气:615
下一篇:WebLogic与ORACLE数据库的连接配置 人气:760
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐