使用INTERVAL YEAR TO MONTH类型
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 ( |
要向数据库提供一个INTERVAL YEAR TO MONTH字面值,可以使用下面的简化语法:
INTERVAL '[+|-][y][-m]' [YEAR[( years_precision)])] [TO MONTH] |
其中
● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。
● y 是一个可选参数,表示时间间隔的年数部分。
● m 是一个可选参数,表示时间间隔的月数部分。如果指定了年数和月数,必须在INTERVAL子句中包含TO MONTH。
● year_precision是一个可选参数,用来说明年数的精度(默认为2)。
使用INTERVAL YEAR TO MONTH类型的更多相关文章
- INTERVAL YEAR TO MONTH数据类型
INTERVAL YEAR TO MONTH数据类型 Oracle语法: INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO ...
- Oracle 数据库 INTERVAL DAY TO SECOND类型的使用
INTERVAL DAY TO SECOND类型可以用来存储单位为天和秒的时间间隔.下面这条语句创建一个名为promotions的表,用来存储促销信息.promotions表包含了一个INTERVAL ...
- 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
INTERVAL YEAR TO MONTH: 作为年和月的时间间隔存储 INTERVAL DAY TO SECOND: 作为天.小时.分和秒的时间间隔存储(DAY,HOUR,MINUTE,SECON ...
- INTERVAL 用法 mysql
原文:https://blog.csdn.net/sqlquan/article/details/82699237 做个例子描述吧,也许更易于理解. 准备: 1.建表 create table INT ...
- Oracle间隔(interval)分区
(一)什么是间隔分区 间隔分区是Oracle 11.1引入的新功能,通过该功能,可以在输入相应分区的数据时自动创建相应的分区.在没有间隔分区技术之前,DBA通常会创建一个maxvalue分区以避免OR ...
- oracle之时间类型
Oracle 时间类型及Timezone 20.1 Oracle的六种时间类型 DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TI ...
- ORACLE 常用日期函数
1 . add_months(arg1,num) 返回日期arg1加num个月的新日期. select add_months(date'2011-1-1',1) from dual; result: ...
- .Net程序员学用Oracle系列(9):系统函数(上)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...
- Oracle/Hive/Impala SQL比较1
5 Function 指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大. 5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 ...
随机推荐
- JavaScript函数 bind call apply区别
1. apply calll 在JavaScript中 call 和 apply 都是为了改变某个函数运行时上下文而存在的, 换句话说就是为了改变函数内部的this的指向. 这里我们有一个新的对象 b ...
- linux服务器加入windows域时报错Ticket expired
[root@rusky]# net ads join -U administrator Enter administrator's password: kinit succeeded but ads_ ...
- 推荐一款JSON字符串查看器
JSON Viewer是一款方便易用的Json格式查看器.Json格式的数据阅读性很差,如果数据量大的话再阅读方面会十分困难,有了这软件,问题就解决了,能够快速把Json字符串排列规则的树结构,支持对 ...
- Tomcat6+nginx集群,达到负载均衡和session复制
nginx+tomcat做web项目集群,达到负载均衡.故障转移.session复制功能. 1.nginx配置文件见上一篇“nginx配置文件(反向代理+集群+动静分离)” 2.tomcat集群,修改 ...
- ios文件读取(二)
- (void)viewDidLoad { [super viewDidLoad]; /** * @brief 获取文件路径 * */ NSString * filePath = [self get ...
- 洛谷 P3383 【模板】线性筛素数
P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...
- (转)用Eclipse编译你的ROS程序
原地址: http://blog.csdn.net/sujun3304/article/details/18572017 好了,理解了系统各个组件的含义后,还是直接进入程序真刀真枪的从实践中学习吧! ...
- Java中,&&与&;||与|的区别
我们很多人在学习Java的时候,或者其他语言(如:C#,.Net等)都会遇到&和&&,|和||.然而,如果你没有真正理解他们的意思,这回给你的思路上带来很大的麻烦.在Java的 ...
- React/React Native的 ES5 ES6 写法对照
ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React; import Re ...
- jquery取元素值
var j = 1; if (rows.length > 0) { for (var i = 0; i < rows.length; i++) { var row = rows[i]; i ...