美文网首页
Oracle 数据库 INTERVAL DAY TO SECON

Oracle 数据库 INTERVAL DAY TO SECON

作者: 带着二娃去遛弯 | 来源:发表于2019-06-21 11:16 被阅读0次

    INTERVAL DAY TO SECOND类型可以用来存储单位为天和秒的时间间隔。下面这条语句创建一个名为promotions的表,用来存储促销信息。promotions表包含了一个INTERVAL DAY TO SECOND类型的列duration,该列用来记录促销有效的时间间隔:

    CREATE TABLE promotions (
    promotion_id INTEGER CONSTRAINT promotions_pk PRIMARY KEY,
    name VARCHAR2(30) NOT NULL,
    duration INTERVAL DAY(3) TO SECOND (4)
    );
    注意此处指定了duration列中天的精度为3,秒的小数部分精度为4。这就是说可以为该列的天存储3位数字,而为该列的秒最多可以在小数点右边存储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语句向promotions表添加一行记录:

    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));

    下面这个查询对promotions表进行检索,注意duration列值的格式化:

    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

    相关文章

      网友评论

          本文标题:Oracle 数据库 INTERVAL DAY TO SECON

          本文链接:https://www.haomeiwen.com/subject/uexyqctx.html