Oracle To_date Функция. Нужна маска
Вопрос
У меня есть строка из файла 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
Не связан с StackOverflow