ORACLE中的INTERVAL类型

INTERVAL数据类型用来存储两个时间戳之间的时间间隔。可以指定years and months,或者days,hours,minuts,seconds之间的间隔。

ORACLE支持两种INTEVAL类型,它们分别是YEAR TO MONTH和DAY TO SECOND。每个类型都包含leading field和trailing field。主参数定义要被计算的date或者time,副参数定义最小增长量。

下面根据实例来介绍YEARTO MONTH和DAY TO SECOND。

一、INTERVAL YEAR TO MONTH

声明INTERVALYEAR TO MONTH的语法是:

其中:

1.        'INTEGER[-INTEGER],为leadingfield以及可选的trailing field指定具体的数值。同时month即trailing field的取值范围是0到11。

2.        percision,即精度,是对leadingfield的数值的最大长度的限制。取值范围为0-9,默认值是2。

代码一:

DECLARE

v_inteval   INTERVAL YEAR (3) TO MONTH;

BEGIN

v_inteval := INTERVAL'123-2' YEAR TO MONTH;

DBMS_OUTPUT.put_line(v_inteval);

END;

结果为:+123-02。

说明:表示123年2个月。在这个例子中,必须指定YEAR,即leading field的精度(percision),因为默认值为2,如果将声明部分修改为:v_inteval INTERVAL YEAR TO MONTH;会提示精度太小错误。另外,需要注意的是,声明部分需要标注精度,但是赋值部分,即v_inteval := INTERVAL '123-2' YEAR TO MONTH;不需要标注精度,如果标注,会提示语法错误。在本例中,如果精度修改为4,则结果为+0123-02。

代码二:

select INTERVAL '1234' YEAR(4) from dual;

结果为:+1234-00。

说明:表示1234年0个月。因为INTERVAL类型之一,INTERVALYEAR TO MONTH,声明时YEAR(leading field)和MONTH(trailing field)必须同时存在,否则会提示错误信息。所以,如果我们单独引用YEAR或者MONTH时,代码二的例子无法编译通过,只能通过sql语句。

类似的例子还有:

select INTERVAL '345' MONTH(3) from dual;

结果为:+28-09。

二、INTERVAL DAY TO SECOND

声明INTERVAL DAY TO SECOND的语法是:

其中:

1.        INTEGER指定days的数值,数值不能超过leading_percision。

2.        time_expr指定格式为HH[:MI[:SS[.n]]]orMI[:SS[.n]] or SS[.n]的时间,n是second的小数部分,n的长度不能大于fractional_seconds_precision,并受限于fractional_seconds_precision的位数。如果leadingfield为day,则可以选择integer time_expr的模式。

3.        leading_precision为leading_field的精度,取值范围为0-9,默认值为2。

4.        fractional_seconds_precision为秒的精度取值范围1-9,默认值为6。

5.        HOUR的取值范围为0-23,MINUTE的取值范围为0-59,MINUTE的取值范围为0-59.999999999。

代码一:

DECLARE

v_inteval   INTERVAL DAY (7) TO SECOND (5);

BEGIN

v_inteval := INTERVAL'4 5:12:10.222' DAY TO SECOND;

DBMS_OUTPUT.put_line (v_inteval);

END;

结果为:++000000405:12:10.22200。

说明:表示4天5小时12分10.222秒。在这个例子中,DAY以及SECOND的精度都是可选的,类似INTERVALYEAR TO MONTH,声明部分需要标注精度,但是赋值部分,不需要标注精度,如果标注,会提示语法错误。

代码二:

select INTERVAL '4 5:12' DAY TO MINUTE from dual;

结果为:+0405:12:00。

说明:表示4天5小时12分0秒。因为INTEVAL类型之一,INTERVALDAY TO SECOND,声明时DAY和SECOND必须同时存在,否则会提示错误信息。所以,如果我们单独引用YEAR或者MONTH时,代码二的例子无法编译通过,只能通过sql语句。

类似的例子还有:

select INTERVAL '400 5' DAY(3) TO HOUR from dual;

select INTERVAL '400' DAY(3) from dual;

select INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) from dual;

select INTERVAL '11:20' HOUR TO MINUTE from dual;

select INTERVAL '10' HOUR from dual;

select INTERVAL '10:22' MINUTE TO SECOND from dual;

select INTERVAL '10' MINUTE from dual;

select INTERVAL '120' HOUR(3) from dual;

select INTERVAL '30.12345' SECOND(2,4) from dual;(注意,该结果为+00 00:00:30.1235,如果精度为1,3,则结果为+0 00:00:30.123,如果精度为3,7,则结果为+000 00:00:30.1234500)

ORACLE中的INTERVAL类型相关推荐

  1. oracle锁类型tx,Oracle中的锁类型

    Oracle中的锁类型主要分以下3种: DML锁(DML lock):DML 代表数据操纵语言(Data Manipulation Language).一般来讲,表示select,insert,upd ...

  2. Oracle中的TIMESTAMP类型解读(TIMESTAMP存储格式)

     Oracle中的TIMESTAMP类型解读  SQL> create table test_time (col_time timestamp); 表已创建. SQL> insert in ...

  3. Oracle中的Raw类型解释

    CAST 将某种数据类型的表达式显式转换为另一种数据类型. RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节.  LONG R ...

  4. oracle utf8 varchar,Oracle中字符集的类型决定varchar2的字符长度

    1.前几天往数据库表里面插入数据的报了一个这样的错误如下: SQL> insert into student values('中华人民共和',60); insert into student v ...

  5. [转]Oracle中字符集的类型决定varchar2的字符长度

    为什么80%的码农都做不了架构师?>>>    1.前几天往数据库表里面插入数据的报了一个这样的错误如下: SQL> insert into student values('中 ...

  6. oracle中定义表类型数据,oracle 定义表字段域的数据类型

    /****************************************************************************/ >oracle定义表字段域的数据类型 ...

  7. oracle驱动jdbc接口,ORACLE中三种类型的JDBC驱动

    oracle的jdbc驱动主要有下面三类: 1.JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动.因为它需要Oracle Call Int ...

  8. ORACLE中对LONG类型进行处理的方法

    1.在block中处理: 不过PL/SQL代码只能处理不超过32K的数据,超过这个限制,就无法通过PL/SQL来处理. SQL> SET SERVEROUT ON SQL> BEGIN 2 ...

  9. 在oracle中的日期类型与String类型

    to_date()作用是将字符类转化为日期类型. 具体用法:to_date("2004-11-27","yyyy-mm-dd"),前者为字符串,后者为转换日期格 ...

最新文章

  1. 并查集-hdu3083-How Many Answers Are Wrong
  2. Data_Structure03-栈和队列
  3. Java排序算法总结
  4. 如何在vmvare vsphere(ESXI)中移除磁盘中的文件
  5. p40_数据交换方式
  6. 错误代码1833 Cannot change column used in a foreign
  7. 【每日算法Day 73】学妹大半夜私聊我有空吗,然后竟然做出这种事!
  8. 数学基础修炼手册-数学分析-凸优化
  9. mysql触发器trigger 实例详解
  10. 使用iptables+脚本实现只允许中国IP访问服务器
  11. 一段话加省略号怎么写html,HTML 应用 文字省略号的表示
  12. 色即是空 空即是色_huadingjin_新浪博客
  13. 计算机run常用命令,Run-Command
  14. 当机械人也开始拥有感情‧谁来定义什么才是人类?
  15. 【DeepLearning笔记】python规范书写
  16. 【蓝桥杯省赛真题2】Scratch射击螃蟹 少儿编程scratch蓝桥杯选拔赛真题讲解
  17. 还记得这门古老的编程语言么,送你一份perl书单!
  18. html如何制作艺术字体,设计华丽金沙艺术字体图片的PS教程
  19. Linux 内核编译配置选项简介(转)
  20. 联想集团2017财年营收430.35亿美元 净利润5.35亿美元

热门文章

  1. D3js(五):tooltips
  2. web.xml中的ContextLoaderListener和DispatcherServlet区别
  3. Thinkpad上安装Ubuntu相关事项
  4. Python学习【day02】-str类型方法记录
  5. WPF整理-为User Control添加依赖属性
  6. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
  7. JAVA(小技巧--List)
  8. 一个北京小网编从1000块起家的网络直销故事
  9. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程
  10. Linux中的延时函数