新聞中心
Oracle中TIMESTAMP類型全面解析:類型介紹、實例及用法技巧

在Oracle數(shù)據(jù)庫中,TIMESTAMP類型用于存儲日期和時間信息,具有很高的精度,可以表示到秒的小數(shù)點后9位,TIMESTAMP類型比DATE類型具有更高的時間精度,能夠滿足更多場景的需求,本文將詳細介紹Oracle中TIMESTAMP的幾種類型,并通過實例講解它們的用法。
TIMESTAMP類型介紹
1、TIMESTAMP
TIMESTAMP是最基本的TIMESTAMP類型,它可以表示從公元前4712年1月1日到公元9999年12月31日的任意時間點,精度為秒的小數(shù)點后9位。
2、TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH TIME ZONE類型在TIMESTAMP的基礎上增加了時區(qū)信息,可以表示全球任意時區(qū)的時間點,該類型在存儲時會保存時區(qū)信息,查詢時可以根據(jù)當前會話的時區(qū)進行轉換。
3、TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE類型與TIMESTAMP WITH TIME ZONE類似,也包含時區(qū)信息,不同之處在于,TIMESTAMP WITH LOCAL TIME ZONE在存儲時會將時間轉換為本地時區(qū),查詢時以本地時區(qū)顯示。
4、INTERVAL YEAR TO MONTH
INTERVAL YEAR TO MONTH類型用于表示一段時間,單位為年和月,可以使用該類型表示5年3個月。
5、INTERVAL DAY TO SECOND
INTERVAL DAY TO SECOND類型用于表示一段時間,單位為天、小時、分鐘和秒,該類型可以精確到秒的小數(shù)點后9位。
實例
1、TIMESTAMP類型的使用
創(chuàng)建一個表,包含TIMESTAMP類型的字段:
CREATE TABLE t_timestamp (
id NUMBER,
ts TIMESTAMP
);
插入數(shù)據(jù):
INSERT INTO t_timestamp (id, ts) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp;
結果:
ID TS --- --------------------- 1 2021-01-01 12:30:45.6789
2、TIMESTAMP WITH TIME ZONE類型的使用
創(chuàng)建一個表,包含TIMESTAMP WITH TIME ZONE類型的字段:
CREATE TABLE t_timestamp_tz (
id NUMBER,
tstz TIMESTAMP WITH TIME ZONE
);
插入數(shù)據(jù):
INSERT INTO t_timestamp_tz (id, tstz) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789 +08:00');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp_tz;
結果(根據(jù)當前會話的時區(qū)進行轉換):
ID TSTZ --- --------------------- 1 2021-01-01 04:30:45.6789
3、TIMESTAMP WITH LOCAL TIME ZONE類型的使用
創(chuàng)建一個表,包含TIMESTAMP WITH LOCAL TIME ZONE類型的字段:
CREATE TABLE t_timestamp_ltz (
id NUMBER,
tsltz TIMESTAMP WITH LOCAL TIME ZONE
);
插入數(shù)據(jù):
INSERT INTO t_timestamp_ltz (id, tsltz) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789 +08:00');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp_ltz;
結果(以本地時區(qū)顯示):
ID TSLTZ --- --------------------- 1 2021-01-01 12:30:45.6789
4、INTERVAL YEAR TO MONTH類型的使用
創(chuàng)建一個表,包含INTERVAL YEAR TO MONTH類型的字段:
CREATE TABLE t_interval_year_to_month (
id NUMBER,
iytm INTERVAL YEAR(5) TO MONTH
);
插入數(shù)據(jù):
INSERT INTO t_interval_year_to_month (id, iytm) VALUES (1, INTERVAL '5-3' YEAR TO MONTH);
查詢數(shù)據(jù):
SELECT * FROM t_interval_year_to_month;
結果:
ID IYTM --- ------------ 1 +05-03
5、INTERVAL DAY TO SECOND類型的使用
創(chuàng)建一個表,包含INTERVAL DAY TO SECOND類型的字段:
CREATE TABLE t_interval_day_to_second (
id NUMBER,
idts INTERVAL DAY(2) TO SECOND(6)
);
插入數(shù)據(jù):
INSERT INTO t_interval_day_to_second (id, idts) VALUES (1, INTERVAL '10 12:30:45.6789' DAY TO SECOND);
查詢數(shù)據(jù):
SELECT * FROM t_interval_day_to_second;
結果:
ID IDTS --- ------------------- 1 +10 12:30:45.678900
用法技巧
1、TIMESTAMP類型與DATE類型之間的轉換
將TIMESTAMP轉換為DATE:
SELECT TO_DATE(ts, 'YYYY-MM-DD HH24:MI:SS') FROM t_timestamp;
將DATE轉換為TIMESTAMP:
SELECT TO_TIMESTAMP(d, 'YYYY-MM-DD HH24:MI:SS') FROM t_date;
2、TIMESTAMP類型與字符串之間的轉換
將TIMESTAMP轉換為字符串:
SELECT TO_CHAR(ts, 'YYYY-MM-DD HH24:MI:SS') FROM t_timestamp;
將字符串轉換為TIMESTAMP:
SELECT TO_TIMESTAMP('2021-01-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS') FROM dual;
3、使用時區(qū)
在插入數(shù)據(jù)時,可以指定時區(qū):
INSERT INTO t_timestamp_tz (id, tstz) VALUES (2, TIMESTAMP '2021-01-01 12:30:45.6789 AT TIME ZONE 'UTC');
查詢時,可以指定時區(qū):
SELECT id, tstz AT TIME ZONE 'UTC' FROM t_timestamp_tz WHERE id = 2;
4、日期時間運算
TIMESTAMP類型支持日期時間運算,
SELECT ts + INTERVAL '1' DAY FROM t_timestamp;
Oracle中的TIMESTAMP類型提供了豐富的日期和時間表示方法,可以滿足各種場景的需求,通過本文的介紹和實例,相信讀者已經(jīng)對TIMESTAMP類型有了更深入的了解,可以更好地在Oracle數(shù)據(jù)庫中應用這些類型。
文章題目:Oracle中TIMESTAMP的幾種類型介紹與實例
路徑分享:http://www.dlmjj.cn/article/dpedhje.html


咨詢
建站咨詢
