Oracle 数据库 INTERVAL DAY TO SECOND类型的使用
2016-02-02 16:28
686 查看
INTERVAL DAY TO SECOND类型可以用来存储单位为天和秒的时间间隔。下面这条语句创建一个名为promotions的表,用来存储促销信息。promotions表包含了一个INTERVAL DAY TO SECOND类型的列duration,该列用来记录促销有效的时间间隔:
注意此处指定了duration列中天的精度为3,秒的小数部分精度为4。这就是说可以为该列的天存储3位数字,而为该列的秒最多可以在小数点右边存储4位数字。
要向数据库提供一个INTERVAL DAY TO SECOND字面值,可以使用下面的简化语法:
其中
● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。
● d 是时间间隔的天数。
● h 是一个可选参数,表示时间间隔的小时数。如果指定了天和小时,必须在INTERVAL子句中包含TO HOUR。
● h 是一个可选参数,表示时间间隔的分钟数。如果指定了天和分,必须在INTERVAL子句中包含TO MINUTES。
● s 是一个可选参数,表示时间间隔的秒数。如果指定了天和秒,必须在INTERVAL子句中包含TO SECOND。
● days_precision是一个可选参数,用来说明天数的精度(默认值为2)。
● seconds_precision是一个可选参数,用来说明秒的精度(默认值为6)。
表5-12给出了几个INTERVAL DAY TO SECOND类型的时间间隔字面量的例子。
表5-12 时间间隔字面量的例子
下面这个INSERT语句向promotions表添加一行记录:
下面这个查询对promotions表进行检索,注意duration列值的格式化:
CREATE TABLE promotions ( promotion_id INTEGER CONSTRAINT promotions_pk PRIMARY KEY, name VARCHAR2(30) NOT NULL, duration INTERVAL DAY(3) TO SECOND (4) ); |
要向数据库提供一个INTERVAL DAY TO SECOND字面值,可以使用下面的简化语法:
INTERVAL '[+|-][ d] [ h[: m[: s]]]' [DAY[( days_precision)]]) [TO HOUR | MINUTE | SECOND[( seconds_precision)]] |
● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。
● d 是时间间隔的天数。
● h 是一个可选参数,表示时间间隔的小时数。如果指定了天和小时,必须在INTERVAL子句中包含TO HOUR。
● h 是一个可选参数,表示时间间隔的分钟数。如果指定了天和分,必须在INTERVAL子句中包含TO MINUTES。
● s 是一个可选参数,表示时间间隔的秒数。如果指定了天和秒,必须在INTERVAL子句中包含TO SECOND。
● days_precision是一个可选参数,用来说明天数的精度(默认值为2)。
● seconds_precision是一个可选参数,用来说明秒的精度(默认值为6)。
表5-12给出了几个INTERVAL DAY TO SECOND类型的时间间隔字面量的例子。
表5-12 时间间隔字面量的例子
时间间隔字面量 | 说明 |
INTERVAL ‘3’ DAY | 时间间隔为3天 |
INTERVAL ‘2’ HOUR | 时间间隔为2小时 |
INTERVAL ‘25’ MINUTE | 时间间隔为25分钟 |
INTERVAL ‘45’ SECOND | 时间间隔为45秒 |
INTERVAL ‘3 2’ DAY TO HOUR | 时间间隔为3天零2小时 |
INTERVAL ‘3 2:25’ DAY TO MINUTE | 时间间隔为3天零2小时25分 |
INTERVAL ‘3 2:25:45’ DAY TO SECOND | 时间间隔为3天零2小时25分45秒 |
INTERVAL ‘123 2:25:45.12’ DAY(3) TO SECOND(2) | 时间间隔为123天零2小时25分45.12秒; 天的精度是3位数字,秒的小数部分的精度是2位数字 |
INTERVAL ‘3 2:00:45’ DAY TO SECOND | 时间间隔为3天2小时0分45秒 |
INTERVAL ‘-3 2:25:45’ DAY TO SECOND | 时间间隔为负数,值为3天零2小时25分45秒 |
INTERVAL ‘1234 2:25:45’ DAY(3) TO SECOND | 时间间隔无效,因为天的位数超过了指定的精度3 |
INTERVAL ‘123 2:25:45.123’ DAY TO SECOND(2) | 时间间隔无效,因为秒的小数部分的位数超过了指定的精度2 |
INSERT INTO promotions (promotion_id, name, duration) VALUES (1, '10% off Z Files', INTERVAL '3' DAY); INSERT INTO promotions (promotion_id, name, duration) VALUES (2, '20% off Pop 3', INTERVAL '2' HOUR); INSERT INTO promotions (promotion_id, name, duration) VALUES (3, '30% off Modern Science', INTERVAL '25' MINUTE); INSERT INTO promotions (promotion_id, name, duration) VALUES (4, '20% off Tank War', INTERVAL '45' SECOND); INSERT INTO promotions (promotion_id, name, duration) VALUES (5, '10% off Chemistry', INTERVAL '3 2:25' DAY TO MINUTE); INSERT INTO promotions (promotion_id, name, duration) VALUES (6, '20% off Creative Yell', INTERVAL '3 2:25:45' DAY TO SECOND); INSERT INTO promotions (promotion_id, name, duration) VALUES (7, '15% off My Front Line', INTERVAL '123 2:25:45.12' DAY(3) TO SECOND(2)); |
SELECT * FROM promotions; PROMOTION_ID NAME DURATION ------------ ------------------------------ ------------------ 1 10% off Z Files +003 00:00:00.0000 2 20% off Pop 3 +000 02:00:00.0000 3 30% off Modern Science +000 00:25:00.0000 4 20% off Tank War +000 00:00:45.0000 5 10% off Chemistry +003 02:25:00.0000 6 20% off Creative Yell +003 02:25:45.0000 7 15% off My Front Line +123 02:25:45.1200 |
相关文章推荐
- 2.1 Oracle架构基础
- [Oracle]OWI等待事件视图(v$session_wait/v$session_event/v$system_event)
- VC6 C/CPP操作ORACLE数据库 clilib方案
- Oracle学习之基本语法(一)—内置函数
- oracle视图
- oracle多表查询之内连接,外连接语句总结
- Oracle学习(序言)
- oracle中时间运算
- oracle中一些用法总结
- oracle数据库之PL/SQL程序结构(上)
- linux设置tomcat、oracle开机启动
- 查询oracle数据库,返回的数据是乱码。 PL/SQL正常。
- ORACLE 11G内存管理方式
- VirtualBox安装虚拟机Oracle linux 6.6 release版本
- Oracle笔试题
- ORACLE 分区
- oracle interval-partition 解决range分区大难题
- Oracle时间函数numtoyminterval()
- centos 6.4下安装oracle 11hg rac 参数
- linux下 oracle常用命令