搜索
首页数据库mysql教程如何掌握 Oracle 中的时间间隔型数据

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 在9i 版本以前,Oracle 没有内置的方式来记录时间的流逝。DATE型数据用来记录单独的时间点;但是要表达一个时间量(也就是一个间隔),数据库的设计者就必须把时间间隔转换成原始单位秒,然后用一个

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    在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 中的时间间隔型数据

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是oracle asm什么是oracle asmApr 18, 2022 pm 04:16 PM

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

怎么关闭oracle触发器怎么关闭oracle触发器Apr 18, 2022 pm 05:34 PM

关闭触发器的方法:1、使用“ALTER TRIGGER 触发器名称 DISABLE;”语句,可关闭指定名称的触发器;2、使用“ALTER TABLE 表名称 DISABLE ALL TRIGGERS;”语句,可关闭指定数据表中的所有触发器。

oracle 11g中的g是什么意思oracle 11g中的g是什么意思May 07, 2022 pm 06:02 PM

在oracle中,11g中的g是网格运算的意思,是grid的缩写;oracle 11g的版本是为了迎合分布式计算而做出的变化,因此做出了网格运算方面的改进,是oracle支持网格计算环境的体现,与8i中i代表internet的情况类似。

oracle有临时变量吗oracle有临时变量吗Apr 18, 2022 pm 06:04 PM

oracle有临时变量。在Oracle数据库中,可以使用变量来编写通用的sql语句,如果该变量前使用了“&”和“&&”符号,那么该变量就是一个临时变量,语法为“sql语句>&变量名;”。临时变量只在使用它的sql语句中有效,变量值不能保留。

oracle中dmp文件是什么文件oracle中dmp文件是什么文件May 07, 2022 pm 05:43 PM

在oracle中,dmp文件是数据库导出的文件,常用于数据库的备份和迁移;例如在dmp文件导入时,需要先把dmp文件存放到dump路径下,利用“imp dp 用户名/密码@orcl...需要导入的dmp文件名”命令导入即可。

一起聊聊Oracle怎样查询执行计划一起聊聊Oracle怎样查询执行计划May 05, 2022 pm 07:10 PM

本篇文章给大家带来了关于oracle的相关知识,其中主要介绍了关于查询执行计划的相关内容,执行计划也叫查询计划,是数据库执行SQL语句的具体步骤和过程,下面一起来看一下,希望对大家有帮助。

oracle有哪些索引oracle有哪些索引Apr 18, 2022 pm 05:18 PM

oracle的索引类型有:非唯一索引、唯一索引、位图索引、局部有前缀分区索引、局部无前缀分区索引、全局有前缀分区索引、散列分区索引、基于函数的索引。索引需在表中插入数据后创建,唯一索引可用“create unique index”语句创建。

如何通过编写实用代码来掌握 PHP8 扩展的使用如何通过编写实用代码来掌握 PHP8 扩展的使用Sep 12, 2023 pm 02:39 PM

如何通过编写实用代码来掌握PHP8扩展的使用引言:PHP(HypertextPreprocessor)是一种广泛使用的开源脚本语言,常用于编写Web应用程序。随着PHP8的发布,新的扩展和功能使得开发者能够更好地满足业务需求和提高代码效率。本文将介绍如何通过编写实用代码来掌握PHP8扩展的使用。一、了解PHP8扩展PHP8引入了许多新的扩展,如FFI、

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。