OceanBase TIMESTAMP 數(shù)據(jù)類型

2021-06-29 15:00 更新

日期時(shí)間數(shù)據(jù)類型中除了 ?DATE? 數(shù)據(jù)類型以外還有 ?TIMESTAMP[(scale)] ?時(shí)間戳數(shù)據(jù)類型。它是 ?DATE ?數(shù)據(jù)類型的擴(kuò)展,跟 DATE 數(shù)據(jù)類型一樣,它存儲(chǔ)了年、月、日、時(shí)、分和秒等信息,但是不存儲(chǔ)時(shí)區(qū)信息,它的時(shí)間最大可以精確到納秒。所以它常用于存儲(chǔ)時(shí)間精確度高和不需要考慮時(shí)區(qū)變換的數(shù)據(jù)。

語法

TIMESTAMP [(scale)]

參數(shù)

參數(shù)

取值范圍

說明

scale

0~9

TIMESTAMP[(scale)] 的范圍和精確度取決于 scale 的值,最大值為 9(納秒,即秒數(shù)精確至小數(shù)點(diǎn) 9 位),最小值為 0(秒,即秒數(shù)精確至小數(shù)點(diǎn) 0 位),默認(rèn)值為 6。

格式

?TIMESTAMP? 數(shù)據(jù)類型的默認(rèn)輸入輸出格式由 ?NLS_TIMESTAMP_FORMAT? 決定,運(yùn)行以下 SQL 語句查看默認(rèn)格式:

SELECT @@NLS_TIMESTAMP_FORMAT FROM DUAL;

返回結(jié)果:

DD-MON-RR HH.MI.SSXFF AM

如果您需要自定義數(shù)據(jù)的格式,可以使用轉(zhuǎn)換函數(shù)。在插入數(shù)據(jù)時(shí),您可以通過函數(shù) ?TO_TIMESTAMP (char,fmt) ?指定數(shù)據(jù)的輸入格式。查詢數(shù)據(jù)時(shí),您可以通過函數(shù) ?TO_CHAR (datetime,fmt) ?指定數(shù)據(jù)的輸出格式。這兩個(gè)轉(zhuǎn)換函數(shù)會(huì)將字符串轉(zhuǎn)化為參數(shù) fmt 中定義的格式。在 ?fmt? 未指明的情況下,使用默認(rèn)格式。

取值范圍

?0001-01-01 00:00:00.000000000? ~ ?9999-12-31 23:59:59.999999999?

示例

  • 示例1:如下代碼所示,在表 Timestamp_Sample 中創(chuàng)建了數(shù)據(jù)類型為?TIMESTAMP? 的兩列 timestp1 和 timestp2, 并且為 timestp2 指定了時(shí)間的精度為 3。向兩列同時(shí)使用? TO_TIMESTAMP(string, format) ?插入日期值 2020-01-01 11:00:00。
CREATE TABLE Timestamp_Sample(timestp1 TIMESTAMP, timestp2 TIMESTAMP(3));
INSERT INTO Timestamp_Sample(timestp1,timestp2) VALUES(TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS')); 
SELECT * FROM Timestamp_Sample;

結(jié)果如下,可以看到 timestp1 由于沒有指定 scale 的值,所以結(jié)果時(shí)間精度默認(rèn)為 6 位,timestp2 在指定后精度為 3 位:

+------------------------------+---------------------------+
| timestamp1                   | timestamp2                |
+------------------------------+---------------------------+
| 01-JAN-20 11.00.00.000000 AM | 01-JAN-20 11.00.00.000 AM |
+------------------------------+---------------------------+
  • 示例2:以下語句使用函數(shù)? TO_CHAR (datetime,fmt) ?指定輸出格式。
SELECT TO_CHAR(TO_TIMESTAMP_TZ('25-FEB-20 11:00:00 AM America/Los_Angeles','DD-MON-RR HH:MI:SSXFF PM TZR'),'YYYY-MM-DD HH:MI:SSXFF PM TZR') Timestamp 
FROM DUAL;

返回結(jié)果:

+------------------------------------------------------+
| Timestamp                                            |
+------------------------------------------------------+
| 2020-02-25 11:00:00.000000000 AM America/Los_Angeles |
+------------------------------------------------------+
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)