2010-09-16 12 views
6

Tengo una cadena de fecha del archivo xml de ese tipo: '2010-09-09T22: 33: 44.OZ'Oracle to_date function. Máscara necesaria

Necesito extraer solo la fecha y la hora. Quiero ignorar el símbolo T y .OZ (zona horaria). ¿Qué máscara debería usar? Gracias de antemano

+0

posible duplicado de [la conversión de una fecha XSD xs: fecha y hora a una fecha de Oracle] (http://stackoverflow.com/questions/3549068/converting-a-xsd-date-xsdatetime-to-a-oracle-date) – APC

Respuesta

11
select TO_DATE('2010-09-09T22:33:44.OZ' 
       ,'YYYY-MM-DD"T"HH24:MI:SS".OZ"') 
from dual; 

9/09/2010 10:33:44 PM 
6

Si se necesita la información de zona horaria:

select to_timestamp_tz('2010-09-09T22:33:44.GMT','YYYY-MM-DD"T"HH24:MI:SS.TZR') 
from dual; 

09-SEP-10 22.33.44.000000000 GMT 

Pero OZ no es una zona horaria reconocida abreviatura, por lo que tenía que hacer algunos pre-conversión de ese algo que es.

Si desea ignorar esa parte, y él ha fijado, puede hacer lo que dijo @Jeffrey Kemp:

select to_date('2010-09-09T22:33:44.OZ','YYYY-MM-DD"T"HH24:MI:SS."OZ"') 
from dual; 

09/09/2010 22:33:44 -- assuming your NLS_DATE_FORMAT is DD/MM/YYYY HH24:MI:SS 

Si desea ignorar, pero que no es fija, entonces tendrá para recortar si fuera la primera, algo así como (usando una variable de enlace aquí por razones de brevedad):

var input varchar2(32); 
exec :input := '2010-09-09T22:33:44.OZ'; 
select to_date(substr(:input,1,instr(:input,'.') - 1),'YYYY-MM-DD"T"HH24:MI:SS') 
from dual; 

09/09/2010 22:33:44 
+1

OZ significa Ortszeit, que es alemán para Local Ti yo. – APC

+0

Oh, está bien, así que supongo que eso significa que la parte de la zona horaria puede ignorarse. En cuyo caso, la respuesta de @ Jeffrey es bastante más sucinta. –

+0

gracias por su respuesta –

Cuestiones relacionadas