2015-01-21 138 views
0

我想在我的Oracle數據庫中創建一個表具有以下結構:Oracle數據庫表列時間戳

CREATE TABLE orderlines(collectionTime TIMESTAMP NOT NULL); 

時間戳將在一排去的一個例子是:

20-01-2015 11:33:48-04:00 

什麼是用來存儲此時間戳的最佳數據類型? TIMESTAMP或DATE?

另外,格式是什麼?

當我試圖導入包含所有時間戳的CSV文件時,SQL Developer導入嚮導不喜歡格式化。我試圖

DD-MM-YYYY HH24:SS:MM-TZ 

回答

1

什麼是用於存儲該時間戳最好的數據類型? TIMESTAMP或DATE?

TIMESTAMP數據類型是一個擴展DATE數據類型。除了日期時間元素外,TIMESTAMP數據類型還包含一秒的小數部分。它有兩種形式,TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONE。所以,如果你想精確到時區元素的幾秒鐘,去TIMESTAMP。否則,DATE數據類型會爲您提供日期時間元素。

此外,格式是什麼?

格式僅適用於DISPLAY。所以使用你想要顯示的格式模型。您需要使用TO_CHAR和適當的格式模型。例如,

SQL> select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual; 

TO_CHAR(SYSDATE,'MM 
------------------- 
01/21/2015 11:02:27 

SQL> select to_char(sysdate, 'mm/dd/yyyy hh:mi:ss am') from dual; 

TO_CHAR(SYSDATE,'MM/DD 
---------------------- 
01/21/2015 11:03:04 am 

SQL> 

當我試圖導入包含所有的時間戳我的CSV文件,SQL 開發導入嚮導不喜歡的格式。

與您特定於語言環境NLS_DATE_FORMAT問題。

0

嘗試'DD-MM-YYYY HH24:MI:SS-TZH:TZM'。這是將被to_timestamp_tz識別的面具。請注意MM是幾個月,MI是幾分鐘。此外,你的面具有幾分鐘:秒:分鐘,但這會導致錯誤的值而不是錯誤。