Você tem dois problemas:
TO_DATE
não reconhece nenhum componente de fuso horário ou segundos fracionários, você terá que convertê-lo em timestamp com fuso horário e .s
não é como você representa os segundos fracionários, você precisa de .ff
. Os modelos de formato válidos são mostrados na documentação
. Juntando-os você pode fazer:
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
Se você realmente quiser isso como uma data, precisará decidir o que fazer com as informações de fuso horário - suponha que seja a hora local (essencialmente ignore-a) ou converta para UTC ou algum outro fuso horário. Você pode realmente querer mantê-lo como um timestamp com fuso horário.