Имате два проблема:TO_DATE
не разпознава компоненти на часова зона или части от секунди, ще трябва да го конвертирате в клеймо с часова зона и .s
не е начинът, по който представяте дробни секунди, имате нужда от .ff
. Валидните модели на формат са показани в документацията
.
Събирайки ги заедно, можете да направите:
SELECT TO_TIMESTAMP_TZ ('2015-08-26T05:46:30.488+0100',
'YYYY-MM-DD"T"hh24:mi:ss.ffTZHTZM')
FROM DUAL;
TO_TIMESTAMP_TZ('2015-08-26T05:46:30.488+0100','YYYY-MM-DD"T"HH24:MI:SS.FFTZHTZ
-------------------------------------------------------------------------------
26-AUG-15 05.46.30.488000000 +01:00
Ако наистина го искате като дата, ще трябва да решите какво да правите с информацията за часовата зона - или да приемете, че е местно време (по същество го игнорирайте), или да преобразувате в UTC или друга часова зона. Все пак може наистина да искате да го запазите като клеймо за време с часова зона.