2010-09-16 8 views
6

J'ai une chaîne de date à partir d'un fichier XML de ce type: '2010-09-09T22: 33: 44.OZ'Fonction Oracle to_date. Masque nécessaire

Je n'ai besoin d'extraire que la date et l'heure. Je veux ignorer le symbole T et .OZ (fuseau horaire). Quel masque devrais-je utiliser? Merci à l'avance

+0

double possible de [Conversion une date XSD xs: dateTime à une date Oracle] (http://stackoverflow.com/questions/3549068/conversion-a-xsd-date-xsdatetime-en-oracle-date) – APC

Répondre

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 les informations de fuseau horaire est nécessaire:

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 

Mais OZ n'est pas une abréviation de fuseau horaire reconnu, donc vous aurez besoin de faire un peu avant la conversion de ce à quelque chose qui est.

Si vous voulez simplement ignorer cette partie, et il est fixe, vous pouvez faire ce que @Jeffrey Kemp a dit:

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 vous voulez l'ignorer, mais il est pas fixe alors vous aurez besoin pour le couper en premier, quelque chose comme (en utilisant une variable de liaison ici par souci de concision):

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 signifie Ortszeit, qui est l'allemand pour Local Ti moi. – APC

+0

Oh, OK, donc je suppose que cela signifie que la partie timezone peut être ignorée. Dans ce cas, la réponse de Jeffrey est plutôt plus succincte. –

+0

merci pour votre réponse –