2013-03-26 115 views
0

我試圖將包含帶時區的時間戳的VARCHAR2變量轉換爲DATE變量。我可以轉換沒有時區的時間戳,但是當我爲時區添加邏輯時,我會得到「ORA-01821:日期格式無法識別」。請看下面的代碼:Oracle varchar2帶時區的時間戳

DECLARE 
     v_string VARCHAR2(400) := '2011-05-12 19:04:41.032645 +00:00'; 
     v_date DATE; 
    BEGIN 

     SELECT to_timestamp(v_string,'YYYY-MM-DD HH24:MI:SSxFF TZH:TZM') 
     INTO v_date 
     FROM dual; 

    END; 

回答

2

使用TO_TIMESTAMP_TZ

SQL> DECLARE 
    2  v_string VARCHAR2(400) := '2011-05-12 19:04:41.032645 +00:00'; 
    3  v_date DATE; 
    4 BEGIN 
    5  v_date := to_timestamp_tz(v_string, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'); 
    6 END; 
    7/

PL/SQL procedure successfully completed 
+0

謝謝!我也剛剛發現。 – user2212306 2013-03-26 16:05:10

+0

@ben不,你不糾正:) – 2013-03-26 16:08:34