Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-01821:errore formato data non riconosciuto per data ISO 8601 con ora locale

Hai due problemi:TO_DATE non riconosce alcun componente del fuso orario o frazioni di secondi, dovrai convertirlo in timestamp con fuso orario e .s non è comunque come rappresenti i secondi frazionari, hai bisogno di .ff . I modelli di formato validi sono riportati nella documentazione .

Mettendoli insieme puoi fare:

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 la vuoi davvero come data, dovrai decidere cosa fare con le informazioni sul fuso orario:supponi che sia l'ora locale (essenzialmente ignorala) o converti in UTC o in qualche altro fuso orario. Potresti davvero volerlo mantenere come timestamp con il fuso orario.