Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-01821:erro de formato de data não reconhecido para data ISO 8601 com hora local


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.