INTERVAL数据类型-007

原创 2007年05月06日 00:23:00

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

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

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

一、INTERVAL YEAR TO MONTH

声明INTERVAL YEAR TO MONTH的语法是:

其中:

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

2 percision,即精度,是对leading field的数值的最大长度的限制。取值范围为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 INTEVAL '1234' YEAR(4) from dual;

结果为:+1234-00。

说明:表示1234年0个月。因为INTEVAL类型之一,INTERVAL YEAR 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]]]or MI[:SS[.n]] or SS[.n]的时间,n是second的小数部分,n的长度不能大于fractional_seconds_precision,并受限于fractional_seconds_precision的位数。如果leading field为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;

结果为:++0000004 05:12:10.22200。

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

代码二:

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

结果为:+04 05:12:00。

说明:表示4天5小时12分0秒。因为INTEVAL类型之一,INTERVAL DAY 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) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

007_Java数据类型转换

基本数据类型的转换 自动类型转换(小==>大) l 自动类型转换(不考虑boolean):容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为: l 有多种类型的数据混合运算时,...

Oracle中的INTERVAL数据类型详解

INTERVAL YEAR TO MONTH数据类型 Oracle语法: INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precisio...

web前端-JavaScript 数据类型 -007

字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。JavaScript 拥有动态类型Java...

Java千百问_06数据结构(007)_String属于基本数据类型吗

点击进入_更多_Java千百问1、String属于基本数据类型吗首先要明确的是,String不是基本数据类型,它继承于Object,是一个jdk提供的字符串类。 但是,String和其他对象相比,j...

mysql_数据类型

【redis源码剖析】 redis内置数据类型之字符串sds

redis 没有采用c语言字符串,而是自己构建动态字符串 sds。C语言字符串不可修改,而sds是可动态修改。 1 sds存储结构 typedef char *sds;/* Note: sdshd...

第2章 数据类型与表达式

  • 2015-12-06 22:13
  • 503KB
  • 下载

sqlite3中的数据类型

sqlite3数据类型
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)