Oracle 資料庫 INTERVAL DAY TO SECOND類型的使用

來源:互聯網
上載者:User

標籤:

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 SECOND類型的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.