2014-02-10 74 views
0

我有一個表:甲骨文時間戳

Cust_data 
    ( 
    "SEQ_NO" NUMBER, 
    "CUST_ID" VARCHAR2, 
    "SERVER_SID" VARCHAR2, 
    "CUST_NAME" VARCHAR2, 
    "EVENT_TYM" TIMESTAMP, 
    "CUST_DOB" DATE, 
    "ADD_TYMSTMP" TIMESTAMP, 
    "STATUS" VARCHAR2 
    ) 

,我試圖插入格式的時間戳:

update CUST_DATA set 
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25T04:05:26.669Z','yyyy/mm/dd'T'hh24:mi:ss'Z'') 
where CUST_ID='chan012' 

2014-01-25T04:05:26.669Z 

我已經使用這個update語句嘗試

以上更新聲明給出了一個錯誤:

ORA-00907: missing right parenthesis 

而這個聲明是完美的。

update CUST_DATA set 
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25 04:05:26.669','yyyy-mm-dd hh24:mi:ss.ff') 
where CUST_ID='chan012' 

但問題是我需要將此格式放入表格中。

2014-01-25T04:05:26.669Z 

我有一個csv文件加載到這張表與上述時間戳格式,它沒有得到加載。 所以我試圖插入一個記錄它不工作。 任何人都可以幫忙,在此先感謝。

+1

「*它得到失敗。 *「 - 既不是有效的Oracle錯誤消息也不是可接受的錯誤描述 –

+0

@a_horse_with_no_name:這是我得到的錯誤 ORA-00907:缺少右括號 –

回答

1

您需要周圍使用固定的字符,而不是單引號雙引號:

update CUST_DATA set 
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25T04:05:26.669Z', 
    'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"') 
where CUST_ID='chan012'; 

這是shown in the documentation;格式型號列表中顯示的固定值爲"text"

在您的版本中,模型末尾的兩個單引號... 'Z'') ...被視爲轉義引號,這意味着您的引號數量不均勻 - 您的字符串未終止,甚至會出錯如果是。 ORA-00907是一個相當通用的,並不總是直接有用的錯誤。它通常意味着你已經有了一些相當基本的錯誤,Oracle已經到了解析步驟的最後,卻沒有弄清楚究竟是什麼。有時候,你確實錯過了右括號,但當你看到這一點時,你通常不得不看更深一點。

你說你正在加載這些數據;如果你使用SQL * Loader爲,那麼你可以specify the model in the control file

load data .... into cust_data ... 
(
    ... 
    add_tymstmp timestamp 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"', 
    ... 
) 

測試在11gR2中,並用文件中的固定值,這給:

select add_tymstmp, 
    to_char(add_tymstmp, 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"') as display 
from cust_data; 

ADD_TYMSTMP     DISPLAY      
---------------------------- ------------------------------ 
25-JAN-14 04.05.26.669000000 2014-01-25T04:05:26.669Z  
+0

我試過這個,但是這個工作,但是在DB我想存儲char('T'和'Z')以及timeStamp。 解決方案ü給了很好的作品,但它刪除了字符:( –

+1

@Akhilendra - 你不能存儲額外的字符。'timestamp'列有一個內部表示,這與你如何顯示值無關。你希望以'to_char()'方式選擇時使用相同的格式模型來顯示*。請不要試圖將它作爲字符串存儲,請將它視爲原樣,時間戳直到你在某處顯示它。我更新了我的示例以顯示您的格式 - 默認情況下,當我選擇我得到一個完全不同的顯示,但應用格式模型給出你想要的,我希望。 –

+0

謝謝亞歷克斯。這很有幫助。 –