2010-09-16 19 views
6

Bu tür bir xml dosyasından bir tarih dizim var: '2010-09-09T22: 33: 44.OZ'Oracle to_date işlevi. Maske gerekli

Sadece tarih ve saat almam gerekiyor. T ve .OZ (saat dilimi) sembolünü yok saymak istiyorum. Hangi maskeyi kullanmalıyım? peşin

+0

olası yinelenen: (http://stackoverflow.com/questions, ilk gibi bir şey (kısa tutmak amacıyla burada bir bağlama değişkeni kullanarak) onu keserek/3549068/converting-a-xsd-date-xsdatetime-to-an-oracle-date) – APC

cevap

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

teşekkürler zaman dilimi bilgi gerekirse:

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 

Ama OZ tanınan zaman dilimi kısaltma değil, bu yüzden bir şey o bazı ön dönüşüm yapmak gerekir edeceğimi olduğunu. Eğer bunu göz ardı etmek istiyorsanız

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 

ama o zaman gerekir sabit değildir: sadece o kısmını görmezden istiyorum ve sorun çözüldü ise

, sen @Jeffrey Kemp dediğini yapabilir [bir XSD tarih xs dönüştürme: dateTime Oracle tarihi] arasında

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, yerel Ti için Almanca olan Ortszeit anlamına gelir ben mi. – APC

+0

Oh, tamam, sanırım bu, saat dilimi kısmının göz ardı edilebileceği anlamına geliyor. Bu durumda, Jeffrey'nin cevabı daha kısadır. –

+0

Cevabınız için teşekkür ederiz. –