Функция Oracle to_date. Маска нужна - PullRequest
6 голосов
/ 16 сентября 2010

У меня есть строка даты из XML-файла такого вида: '2010-09-09T22: 33: 44.OZ'

Мне нужно извлечь только дату и время.Я хочу игнорировать символы T и .OZ (часовой пояс).Какую маску мне следует использовать?Заранее спасибо

Ответы [ 2 ]

11 голосов
/ 16 сентября 2010
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 голосов
/ 16 сентября 2010

Если требуется информация о часовом поясе:

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 не является распознанным сокращением часового пояса, поэтому вам необходимо предварительно преобразовать его во что-то, что есть.

Если вы хотите просто проигнорировать эту часть, и она исправлена, вы можете сделать то, что @Джеффри Кемп сказал:

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
...