2010-09-16 5 views
6

Ich habe Zeichenfolge von Datum aus XML-Datei von solcher Art: '2010-09-09T22: 33: 44.OZ'Oracle to_date-Funktion. Maske benötigt

Ich muss nur Datum und Uhrzeit extrahieren. Ich möchte das Symbol T und .OZ (Zeitzone) ignorieren. Welche Maske sollte ich verwenden? Vielen Dank im Voraus

+0

möglich Duplikat [Konvertieren eines XSD Datum xs: datetime zu einer Oracle-Datum] zuerst, so etwas wie (unter Verwendung einer Bindevariable hier der Kürze halber) schneiden sie es aus (http://stackoverflow.com/questions/3549068/converting-a-xsd-Datum-xsdatetime-to-a-oracle-date) – APC

Antwort

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

Wenn die Zeitzone Informationen benötigt:

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 

Aber OZ keine Zeitzone Abkürzung anerkannt ist, so würden Sie eine Pre-Umwandlung, dass etwas tun müssen, dass ist.

Wenn Sie nur wollen, dass ein Teil ignorieren, und es wird festgelegt, können Sie das tun, was @Jeffrey Kemp sagte:

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 

Wenn Sie es ignorieren wollen, aber es ist nicht festgelegt, dann werden Sie brauchen

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 steht für Ortszeit, was für Local Ti deutsch ist mich. – APC

+0

Oh, OK, ich denke, das bedeutet, dass der Teil der Zeitzone ignoriert werden kann. In diesem Fall ist @ Jeffreys Antwort eher prägnant. –

+0

Vielen Dank für Ihre Antwort –