当前位置:首页 > SCHOOL > Oracle字典 > 正文内容

Oracle Interval

admin3年前 (2022-03-26)Oracle字典8640

在本教程中,我们将向您介绍Oracle INTERVAL数据类型,并演示如何有效处理区间值。

Oracle INTERVAL数据类型简介

Oracle提供了两种日期时间数据类型:DATE和TIMESTAMP用于存储时间点数据。另外,它提供INTERVAL数据类型用于存储一段时间。

有两种类型的INTERVAL:

(1)INTERVAL YEAR TO MONTH - 间隔使用年份和月份。

(2)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。

以下是参数:

(1)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字段。

(2)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' MONTH40个月或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)]

在上面这个语法中,

(1)day_precision - 是DAY字段中的位数。取值范围是0~9,缺省值是2。

(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 MINUTE11天,10小时和09分钟。
INTERVAL '100 10' DAY(3) TO HOUR100天10个小时。
INTERVAL '999' DAY(3)999天
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)9小时08分钟和7.6666666秒。
INTERVAL '09:30' HOUR TO MINUTE9小时30分钟。
INTERVAL '8' HOUR8小时
INTERVAL '15:30' MINUTE TO SECOND15分30秒。
INTERVAL '30' MINUTE30分钟
INTERVAL '5' DAY5天
INTERVAL '40' HOUR40小时
INTERVAL '15' MINUTE15分钟
INTERVAL '250' HOUR(3)250个小时
INTERVAL '15.6789' SECOND(2,3)四舍五入到15.679秒。 由于精度为3,分数秒’6789’被舍入为’679’
 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。