Du har to problemer:TO_DATE
ikke genkender nogen tidszonekomponenter eller brøkdele af sekunder, skal du konvertere det til tidsstempel med tidszone og .s
er det alligevel ikke sådan, du repræsenterer brøksekunder, du skal bruge .ff
. De gyldige formatmodeller er vist i dokumentationen
.
Ved at sætte dem sammen kan du:
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
Hvis du virkelig vil have det som en dato, skal du beslutte, hvad du skal gøre med tidszoneoplysningerne - enten antage, at det er lokal tid (i hovedsagen ignorere det), eller konvertere til UTC eller en anden tidszone. Du vil måske gerne beholde det som et tidsstempel med tidszone.