سؤال

لديّ سلسلة من التاريخ من ملف XML من هذا النوع: "2010-09-09T22: 33: 44.oz '

أحتاج إلى استخراج التاريخ والوقت فقط. أريد تجاهل الرمز T و .oz (المنطقة الزمنية). أي قناع يجب أن أستخدمه؟ شكرا مقدما

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

إذا كانت المعلومات الزمنية مطلوبة:

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

ولكن OZ ليس اختصارًا معترفًا بالمنطقة الزمنية ، لذلك ستحتاج إلى القيام ببعض التحول المسبق لذلك إلى شيء ما.

إذا كنت تريد فقط تجاهل هذا الجزء ، وهو ثابت ، يمكنك أن تفعل ما قاله 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

إذا كنت ترغب في تجاهله ولكنه غير ثابت ، فستحتاج إلى تقليمه أولاً ، شيء مثل (باستخدام متغير ربط هنا للإيجاز):

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top