2010-02-18 36 views
5

tengo que insertar un formato de fecha de una fuente externa que incluye el código de tres letras para la zona horaria, pero no parece la máscara TZD formato a trabajar ...¿Cuál es la máscara de formato de fecha de Oracle para las zonas horarias?

insert into blah 
    values (to_date('Thu, 18 Feb 2010 08:37:00 EST','Dy, DD Mon YYYY HH24:MI:SS TZD')); 

ORA-01821: date format not recognized 

Si quito el " TZD "...

insert into blah 
    values (to_date('Thu, 18 Feb 2010 08:37:00','Dy, DD Mon YYYY HH24:MI:SS')); 

1 row created. 

¿Cuál es la máscara adecuada para dicha instrucción de inserción en Oracle?

desc blah 
Name      Null? Type 
----------------------------------------- -------- ---------------------------- 
D       DATE 

Editar: Cambié la columna de la tabla de tipo DATE a tipo TIMESTAMP y obtuve el mismo error.

Respuesta

6

Las columnas de fecha no tienen zona horaria como opción. Debería crear la columna como tipo de datos TIMESTAMP WITH TIME ZONE o TIMESTAMP WITH LOCAL TIME ZONE, y además, la función TO_DATE no comprende la máscara de formato de ZONA HORARIA que está aplicando.

SQL> CREATE TABLE T 
    2 (DT DATE, 
    3 TS TIMESTAMP, 
    4 TSTZ TIMESTAMP WITH TIME ZONE, 
    5 TSLTZ TIMESTAMP WITH LOCAL TIME ZONE); 

Table created. 

SQL> INSERT INTO T (TSLTZ) VALUES 
    2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD')) 
    3/

1 row created. 

SQL> INSERT INTO T (TSTZ) VALUES 
    2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD')) 
    3/

1 row created. 
0

Si la zona horaria no es relevante para ti, sólo se tira de la cadena utilizando la función SUBSTR e insertar como en el segundo ejemplo.

Cuestiones relacionadas