使用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 绝对值,有 ...
随机推荐
- 卸载rpm包提示:error: specifies multiple packages
–allmatches Remove all versions of the package which match PACKAGE_NAME. Normally an error is issue ...
- UIActivityIndicatorView活动控制器的大小改变
self.activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicat ...
- ASP.NET MVC4 + Highcharts生成报表
//后端 public ActionResult TighteningReport(BReportTighteningReportModel model, string rate, string we ...
- Android studio快捷键Mac版本
为了方便大家记住这些小技巧和快捷键,我把它写成了一个插件,欢迎大家下载使用:http://chunsheng.me/EasyShortcut/ 快捷键 描述 通用------------------- ...
- 一个超级简单php的留言板
第一步:配置好测试环境:(详细略了) 第二部:新建一个数据库,命名为guestbook(名字可以随便改),可以直接在phpmyadmin里面操作,在数据库里面新建一张表‘content’,表里面有4个 ...
- Python Tcp Socket
socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...
- Scala学习笔记--抽象成员
package com.evor.test1 class Test1 { } object Test1{ def main(args:Array[String]):Unit = { //类参数和抽象字 ...
- PHP-FPM小故障解决记录
前天昨天发生的事. 阿里云升级MYSQL,申请只读库之后,IP发生了改变,PHP中关于数据库的连接都需要修改. 我们是以实例名作为统一连接字符的. 但在其中一台后端机器上,死活不生效. 就是如何是用I ...
- rsync实现文件备份同步(比如服务器镜像)
[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...
- 程序减肥,strip,eu-strip 及其符号表
程序减肥,strip,eu-strip 及其符号表 我们要给我们生成的可执行文件和DSO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们还希望万一出事了, ...