赞
踩
在本教程中,我们将介绍Oracle INTERVAL数据类型,并演示如何有效处理区间值。
Oracle INTERVAL数据类型简介
Oracle提供了两种日期时间数据类型:DATE和TIMESTAMP用于存储时间点数据。另外,它提供INTERVAL数据类型用于存储一段时间。
有两种类型的INTERVAL:
INTERVAL YEAR TO MONTH - 间隔使用年份和月份。
INTERVAL DAY TO SECOND - 使用包括小数秒在内的天,小时,分钟和秒存储间隔。
1. Oracle INTERVAL YEAR TO MONTH
INTERVAL YEAR TO MONTH数据类型使用YEAR和MONTH字段存储一段时间。
下面介绍一个INTERVAL YEAR TO MONTH:
INTERVAL YEAR [(year_precision)] TO MONTH
year_precision代表YEAR字段中的位数。范围从0到9。
year_precision是可选的。如果省略year_precision参数,则默认为2。也就是说,默认情况下,最多可以存储99年和11个月的期限,这个期限必须小于100年。
2. Oracle INTERVAL YEAR TO MONTH文字
要指定INTERVAL YEAR TO MONTH数据类型的文字值,可以使用以下格式:
INTERVAL 'year[-month]' leading (precision) TO trailing
leading和trailing可以是YEAR或MONTH。
以下是参数:
year[-month]
year和month是整个区间的leading和trailing的整数。 如果leading是YEAR,trailing是MONTH,那么month字段的范围从0到11。
trailing列必须小于leading列。 例如,INTERVAL '1-2' MONTH TO YEAR是无效的,因为leading列YEAR大于MONTH的leading字段。
precision
是leading字段中的最大数字位数。精度范围为:0~9,默认值为2。
下表说明了INTERVAL YEAR TO MONTH文字的示例:
INTERVAL YEAR TO MONTH文字
含意
INTERVAL '120-3' YEAR(3) TO MONTH
间隔120年,3个月; 由于前导字段的值大于默认精度(2位),因此必须指定前导字段精度YEAR(3)。
INTERVAL '105' YEAR(3)
间隔105年0个月。
INTERVAL '500' MONTH(3)
间隔500个月。
INTERVAL '9' YEAR
间隔9年,相当于INTERVAL '9-0' YEAR TO MONTH
INTERVAL '40' MONTH
40个月或3年4个月,相当于INTERVAL '3-4' YEAR TO MONTH
INTERVAL '180' YEAR
无效的时间间隔,因为’180’有3个数字,它大于默认精度(2)
3. Oracle INTERVAL YEAR TO MONTH示例
首先,创建一个名为candidates的新表格:
CREATE TABLE candidates (
candidate_id NUMBER,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
job_title VARCHAR2(255) NOT NULL,
year_of_experience INTERVAL YEAR TO MONTH,
PRIMARY KEY (candidate_id)
);
在此表中,有一个year_of_experience列,其数据类型为INTERVAL YEAR TO MONTH。
其次,将数据插入candidates表:
INSERT INTO candidates (
first_name,
last_name,
job_title,
year_of_experience
)
VALUES (
'Camila',
'Kramer',
'SCM Manager',
INTERVAL '10-2' YEAR TO MONTH
);
在这个上面这个插入语句中,在year_of_experience列中插入了一个INTERVAL '10-2' YEAR TO MONTH 间隔字面值。
INSERT INTO candidates (
first_name,
last_name,
job_title,
year_of_experience
)
VALUES (
'Keila',
'Doyle',
'SCM Staff',
INTERVAL '9' MONTH
);
在这个语句中,在year_of_experience列中插入了一个为INTERVAL '9' MONTH的间隔字面值。
第三,查询INTERVAL YEAR TO MONTH列的数据:
SELECT
*
FROM
candidates;
执行上面查询语句,得到以下结果 -
4. Oracle INTERVAL DAY TO SECOND数据类型
INTERVAL DAY TO SECOND是一种按天,小时,分钟和秒钟存储一段时间。
以下显示INTERVAL DAY TO SECOND数据类型的语法:
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
在上面这个语法中,
day_precision - 是DAY字段中的位数。取值范围是0~9,缺省值是2。
fractional_seconds_precision 是SECOND字段小数部分的位数。范围从0~9。如果省略fractional_seconds_precision,则默认为6。
5. Oracle INTERVAL YEAR TO SECOND字面值
INTERVAL YEAR TO SECOND的字面值形式如下:
INTERVAL leading (leading_precision) to trailing(fractional_seconds_precision)
下表显示了INTERVAL YEAR TO SECOND文字的一些示例:
INTERVAL YEAR TO SECOND字面值
含意
INTERVAL '11 10:09:08.555' DAY TO SECOND(3)
11天,10小时,09分08秒,555/千秒。
INTERVAL '11 10:09' DAY TO MINUTE
11天,10小时和09分钟。
INTERVAL '100 10' DAY(3) TO HOUR
100天10个小时。
INTERVAL '999' DAY(3)
999天
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)
9小时08分钟和7.6666666秒。
INTERVAL '09:30' HOUR TO MINUTE
9小时30分钟。
INTERVAL '8' HOUR
8小时
INTERVAL '15:30' MINUTE TO SECOND
15分30秒。
INTERVAL '30' MINUTE
30分钟
INTERVAL '5' DAY
5天
INTERVAL '40' HOUR
40小时
INTERVAL '15' MINUTE
15分钟
INTERVAL '250' HOUR(3)
250个小时
INTERVAL '15.6789' SECOND(2,3)
四舍五入到15.679秒。 由于精度为3,分数秒’6789’被舍入为’679’
在本教程中,您已学习如何使用Oracle INTERVAL数据类型在表中存储时间段。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。