【ORACLE】INTERVAL DAY TO SECOND

(一)INTERVAL DAY TO SECOND类型可以用来存储单位为天到秒的时间间隔。

INTERVAL '[+|-][ d] [ h[: m[: s]]]' [DAY[( days_precision)]])
[TO HOUR | MINUTE | SECOND[( seconds_precision)]]
● 范围值:
  HOUR: 0 to 23
  MINUTE: 0 to 59
  SECOND: 0 to 59.999999999

● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。

● d 是时间间隔的天数。

● h 是一个可选参数,表示时间间隔的小时数。如果指定了天和小时,必须在INTERVAL子句中包含TO HOUR。

● h 是一个可选参数,表示时间间隔的分钟数。如果指定了天和分,必须在INTERVAL子句中包含TO MINUTES。

● s 是一个可选参数,表示时间间隔的秒数。如果指定了天和秒,必须在INTERVAL子句中包含TO SECOND。

● days_precision是一个可选参数,用来说明天数的精度(默认值为2)。

● seconds_precision是一个可选参数,用来说明秒的精度(默认值为6)。

时间间隔字面量 说明 数据库中显示结果
INTERVAL '3' DAY                    时间间隔为3天                              +003 00:00:00.0000       
INTERVAL '10'  HOUR  时间间隔为10小时 +000 10:00:00.0000
INTERVAL '20' MINUTE 时间间隔为20分钟 +000 00:20:00.0000
INTERVAL '30' SECOND 时间间隔30秒 +000 00:00:30.0000
INTERVAL '3 10' DAY TO HOUR 时间间隔3天10小时 +003 10:00:00.0000
INTERVAL '3 10:20' DAY TO MINUTE 时间间隔3天10小时20分钟 +003 10:20:00.0000
INTERVAL '3 10:20:30' DAY TO SECOND 时间间隔3天10小时20分钟30秒 +003 10:20:30.0000
INTERVAL '3 10:20:30.1234' DAY TO SECOND 时间间隔3天10小时20分钟30.1234秒 +003 10:20:30.1234
INTERVAL '3 10:20:30.1234' DAY TO SECOND(2) 时间间隔3天10小时20分钟30.1234秒,秒的时间精度为2 +003 10:20:30.1200
INTERVAL '3 10:20:30.123456' DAY TO SECOND 时间间隔3天10小时20分钟30.123456秒,但秒的时间精度为4 +003 10:20:30.1235
INTERVAL '1234 10:20:30.1234' DAY TO SECOND ORA-01873: 间隔的前导精度太小 PS:INTERVAL DAY(3) TO SECOND(4) 

(二)创建测试表并插入数据

--创建测试表
CREATE TABLE promotions (
       promotion_id INTEGER CONSTRAINT promotions_pk PRIMARY KEY,
       name VARCHAR2(30) NOT NULL,
       duration INTERVAL DAY(3) TO SECOND (4)
);

--时间间隔为3天
INSERT INTO promotions (promotion_id, name, duration)
VALUES (1, '10% off Z Files', INTERVAL '3' DAY);
 
--时间间隔为2小时
INSERT INTO promotions (promotion_id, name, duration)
VALUES (2, '20% off Pop 3', INTERVAL '2' HOUR);

 --时间间隔为25分钟
INSERT INTO promotions (promotion_id, name, duration)
VALUES (3, '30% off Modern Science', INTERVAL '25' MINUTE);

--时间间隔为45秒
INSERT INTO promotions (promotion_id, name, duration)
VALUES (4, '40% off Tank War', INTERVAL '45' SECOND);

 --时间间隔为3天2小时25分钟
INSERT INTO promotions (promotion_id, name, duration)
VALUES (5, '50% off Chemistry', INTERVAL '3 2:25' DAY TO MINUTE);

--时间间隔为3天2小时25分钟45秒
INSERT INTO promotions (promotion_id, name, duration)
VALUES (6, '60% off Creative Yell', INTERVAL '3 2:25:45' DAY TO SECOND);

--时间间隔为123天2小时25分钟45秒,秒后跟2为精度
INSERT INTO promotions (promotion_id, name, duration)
VALUES (7, '70% off My Front Line',
INTERVAL '123 2:25:45.12' DAY(3) TO SECOND(2));

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          40% off Tank War        +000 00:00:45.0000
5          50% off Chemistry        +003 02:25:00.0000
6          60% off Creative Yell     +003 02:25:45.0000
7          70% off My Front Line     +123 02:25:45.1200

猜你喜欢

转载自www.cnblogs.com/CL-learning/p/12672505.html