2013-03-26 121 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