Oracle Database 9i数据库引入了一种新特性,可以用来存储时间间隔。时间间隔的例子包括:

● 1年零3个月

● 25个月

● -3天5小时16分

● 1天7小时

● -56小时

注意:

不要混淆时间间隔与时间值或时间戳的概念。时间间隔记录的是一段时间长度(例如1年零3个月),而时间值或时间戳记录的是一个特定的日期和时间(例如2006年10月28日下午7点32分16秒)。

在本书假想的在线商店这个例子中,我们可能想在特定的一段时间内对某种商品打折。例如,可以让顾客使用优惠券,其有效期为几个月;或者为在几天内促销产品而打折。本节后面将介绍几个使用优惠券和促销的例子。

表5-10列出了时间间隔的类型。

表5-10  时间间隔类型

类    型

说    明

INTERVAL YEAR[ (years_precision)]TO MONTH

存储一个时间间隔,其单位为年和月;可以通过指定可选的years_precision参数来指定年的精度,该参数是一个0~9的整数。默认的精度为2,意思是可以在时间间隔中为年数存储两位数字。如果试图向表中添加一行年数超过INTERVAL YEAR TO MONTH列可以存储的记录,就会返回一个错误。时间间隔既可以存储正数,也可以存储负数

INTERVAL DAY[(days_precision)]

TO SECOND[( seconds_precision)]

存储一个时间间隔,其单位为天和秒;可以通过指定可选的days_precision参数来指定天的精度,该参数是一个0~9的整数,默认值为2。另外,还可以通过指定可选的seconds_precision参数来指定秒的小数部分的精度,该参数是一个0~9的整数,默认值为6。时间间隔既可以存储正数,也可以存储

表5-11  时间间隔字面量的例子

时间间隔字面量

说明

INTERVAL '1' YEAR

时间间隔为1年

INTERVAL '11' MONTH

时间间隔为11个月

INTERVAL '14' MONTH

时间间隔为14个月(等于1年零2个月)

INTERVAL '1-3' YEAR TO MONTH

时间间隔为1年零3个月

INTERVAL '0-5' YEAR TO MONTH

时间间隔为0年5个月

INTERVAL '123' YEAR(3) TO MONTH

时间间隔为123年,精度为3位数字

INTERVAL '-1-5' YEAR TO MONTH

时间间隔为负数,值为1年零5个月

INTERVAL '1234' YEAR(3)

时间间隔无效:1234包含4位数字,因此它包含的数字超过了精度(只允许最多3位数字)所允许的范围

SQL示例:

SQL> select interval '' month from dual;
INTERVAL''MONTH
---------------------------------------
+00-11 SQL> select interval '' year from dual;
INTERVAL''YEAR
---------------------------------------
+11-00 SQL> select interval '' month from dual;
INTERVAL''MONTH
---------------------------------------
+01-02 SQL> select interval '1-3' year to month from dual;
INTERVAL'1-3'YEARTOMONTH
---------------------------------------
+01-03 SQL> select interval '0-3' year to month from dual;
INTERVAL'0-3'YEARTOMONTH
---------------------------------------
+00-03
SQL> select interval '' year(3) from dual;
INTERVAL''YEAR(3)
---------------------------------------
+101-00 SQL> select interval '-10-5' year to month from dual;
INTERVAL'-10-5'YEARTOMONTH
---------------------------------------
-10-05 SQL> select interval '' year(3) from dual;
select interval '' year(3) from dual
ORA-01873: 间隔的前导精度太小 SQL>

5.8.1  使用INTERVAL YEAR TO MONTH类型

INTERVAL YEAR TO MONTH类型可以用来存储单位为年和月的时间间隔。下面这条语句创建一个名为coupons的表,用来存储优惠券信息。coupons表包含了一个INTERVAL YEAR TO MONTH类型的列duration,该列用来记录优惠券有效的时间间隔。注意,此处指定了duration列的精度为3,这就是说可以为该列的年数部分存储3位数字:

 CREATE TABLE coupons (
coupon_id INTEGER CONSTRAINT coupons_pk PRIMARY KEY,
name VARCHAR2(30) NOT NULL,
duration INTERVAL YEAR(3) TO MONTH
);

要向数据库提供一个INTERVAL YEAR TO MONTH字面值,可以使用下面的简化语法:

INTERVAL '[+|-][y][-m]' [YEAR[( years_precision)])] [TO MONTH]

其中

● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。

● y 是一个可选参数,表示时间间隔的年数部分。

● m 是一个可选参数,表示时间间隔的月数部分。如果指定了年数和月数,必须在INTERVAL子句中包含TO MONTH。

● year_precision是一个可选参数,用来说明年数的精度(默认为2)。

《FROM:http://www.cnblogs.com/theurgy/articles/1549454.html

使用INTERVAL YEAR TO MONTH类型的更多相关文章

  1. INTERVAL YEAR TO MONTH数据类型

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

  2. Oracle 数据库 INTERVAL DAY TO SECOND类型的使用

    INTERVAL DAY TO SECOND类型可以用来存储单位为天和秒的时间间隔.下面这条语句创建一个名为promotions的表,用来存储促销信息.promotions表包含了一个INTERVAL ...

  3. 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND

    INTERVAL YEAR TO MONTH: 作为年和月的时间间隔存储 INTERVAL DAY TO SECOND: 作为天.小时.分和秒的时间间隔存储(DAY,HOUR,MINUTE,SECON ...

  4. INTERVAL 用法 mysql

    原文:https://blog.csdn.net/sqlquan/article/details/82699237 做个例子描述吧,也许更易于理解. 准备: 1.建表 create table INT ...

  5. Oracle间隔(interval)分区

    (一)什么是间隔分区 间隔分区是Oracle 11.1引入的新功能,通过该功能,可以在输入相应分区的数据时自动创建相应的分区.在没有间隔分区技术之前,DBA通常会创建一个maxvalue分区以避免OR ...

  6. oracle之时间类型

    Oracle 时间类型及Timezone 20.1 Oracle的六种时间类型 DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TI ...

  7. ORACLE 常用日期函数

    1 . add_months(arg1,num) 返回日期arg1加num个月的新日期. select add_months(date'2011-1-1',1) from dual; result:  ...

  8. .Net程序员学用Oracle系列(9):系统函数(上)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...

  9. Oracle/Hive/Impala SQL比较1

    5 Function      指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大.   5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 ...

随机推荐

  1. 安装sql server提示挂起报错

    在安装sql server时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机”错误.无法进行下去. 参考有关资料后,以下步骤基本可以解决: 1)添加/删除 ...

  2. SELECT--UNION,UNION ALL,MINUS, INTERSECT,EXISTS

    SELECT--UNION,UNION ALL,MINUS, INTERSECT返回两个查询结果的集合操作,两个查询结果集必须字段相同.UNION和UNION ALL并集操作,UNION并集后去掉重复 ...

  3. [CSAPP笔记][第八章异常控制流][呕心沥血千行笔记]

    异常控制流 控制转移 控制流 系统必须能对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获,也不一定和程序的执行相关. 现代系统通过使控制流 发生突变对这些情况做出反应.我们称这种突变为异常 ...

  4. verilog 实现加法器

    半加器 如果不考虑来自低位的进位将两个1二进制数相加,称为半加. 实现半加运算的逻辑电路称为半加器. 真值表 逻辑表达式和 \begin{align}\notag s = a{b}' + {a}'b ...

  5. HTML与CSS入门——第十一章  在网页中使用图像

    知识点: 1.在网页上放置图像的方法 2.用文本描述图像的方法 3.指定图像高度和宽度的方法 4.对齐图像的方法 5.将图像转换为俩接的方法 6.使用背景图像的方法 7.使用图像映射的方法 11.1 ...

  6. js中window.print()去除页眉页脚

    //jsp打印时去除页眉页页脚 打印前加入下面代码即可 var HKEY_Root,HKEY_Path,HKEY_Key; HKEY_Root="HKEY_CURRENT_USER" ...

  7. 正则表达式,Regex类

    C#regex是正则表达式类用于string的处理,查找匹配的字符串.1,先看一个例子Regex regex=new Regex(@”OK“)://我们要在目标字符串中找到"OK" ...

  8. NSDictionary使用小结

    http://blog.csdn.net/ms2146/article/details/8656787

  9. I/O复用-epoll模型

    epoll函数 epoll函数的使用与select.poll上有很大的差异. epoll使用一组函数来完成任务,而不是单个函数. epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而 ...

  10. 关于 addEventListener 和 handleEvent 方法

    使用 addEventListener 可以绑定事件,并传入回调函数. Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEve ...