知识大全 如何掌握Oracle中的时间间隔型数据

Posted 时间

篇首语:凡我们所为之事,从未被人理解;一直是这样:要么被赞美,要么被指责。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何掌握Oracle中的时间间隔型数据相关的知识,希望对你有一定的参考价值。

如何掌握Oracle中的时间间隔型数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在 i 版本以前 Oracle 没有内置的方式来记录时间的流逝 DATE型数据用来记录单独的时间点 但是要表达一个时间量(也就是一个间隔) 数据库的设计者就必须把时间间隔转换成原始单位秒 然后用一个NUMBER列来保存它

  虽然NUMBER这个数据类型可以以秒为单位准确地表示时间 但是它使得时间的计算变得很困难 比如 秒是 分钟 分钟是 个小时 个小时等于 天——这些数字在以十进制为基础的数字系统中都是非常蹩脚的

  在Oracle i中 按照SQL 标准 增加了时间间隔型数据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表示时间间隔大小时要在日和时间之间用一个空格连接 举个例子来说 下面是 年 个月的时间间隔的表示方法

  INTERVAL YEAR TO MONTH

  下面的例子表示 天 个小时 分钟 秒

  INTERVAL DAY TO SECOND( )

  时间间隔可以为正 也可以为负 它们可以从各种TIMESTAMP数据类型中加上或者减去 从而得到一个新的TIMESTAMP数据类型 它们之间也可以做加减运算得到新的时间间隔

  列表A说明了怎样创建一个表格来记录一个事件的开始时间和持续时间 如实验等 数据被收集以后 SQL中内置的摘要函数不需要与原始单位秒进行相互转换 就可以报告总的持续时间和平均持续时间

  列表A

  CREATE TABLE experiment

  (experiment_id NUMBER( )

  experiment_desc VARCHAR ( )

  experiment_start TIMESTAMP

  experiment_duration INTERVAL DAY( ) TO SECOND( )

  )

  Table created

  INSERT INTO experiment

  VALUES (

   Busted urban myth JUN PM

  INTERVAL DAY( ) TO SECOND( )

  )

   row created

  col experiment_desc format a

  col experiment_start format a

  col experiment_duration format a

  SELECT * FROM experiment

  EXPERIMENT_ID EXPERIMENT_DESC —— —— EXPERIMENT_START EXPERIMENT_DURATION —— —— Busted urban myth JUN PM +

  —— Now pute the experiment s ending time

  SELECT experiment_id experiment_start

  experiment_start + experiment_durationexperiment_end

  FROM experiment

  EXPERIMENT_ID EXPERIMENT_START —— —— EXPERIMENT_END —— JUN PM JUN 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

  

   days hours minutes

cha138/Article/program/Oracle/201311/16775

相关参考

知识大全 轻松掌握什么是数据的物理(存储)结构

  数据结构在计算机中的表示(映像)称为数据的物理(存储)结构它包括数据元素的表示和关系的表示  物理结构即oracle数据库使用的操作系统文件结构对于数据库物理结构文件不同的oracle版本不同的操

知识大全 教你快速掌握Oracle数据库的备份策略

教你快速掌握Oracle数据库的备份策略  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主要介绍

知识大全 快速掌握Oracle数据库游标的使用方法

快速掌握Oracle数据库游标的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  显式游标

知识大全 教你轻松掌握Oracle数据库的后备和恢复

教你轻松掌握Oracle数据库的后备和恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当我们

知识大全 教会你掌握oracle外表

  外表(externaltable)就像普通的表对像一样可以select等只是它是只读的数据库中只保存了表结构的描述表数据却没有存放在数据库内而是存放在了文件系统上当用户想偶尔使用数据库外的结构化数

知识大全 Oracle数据库中的(+)连接

Oracle数据库中的(+)连接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从表AA(+)=

知识大全 java语言操作Oracle数据库中的CLOB数据类型

java语言操作Oracle数据库中的CLOB数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ORACLE数据库中的ROWID

ORACLE数据库中的ROWID  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们可能对ora

知识大全 Oracle数据库中的(+)连接如何操作

Oracle数据库中的(+)连接如何操作?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文主

知识大全 优化Oracle停机时间及数据库恢复

优化Oracle停机时间及数据库恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文中主要探