Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-01821 :erreur de format de date non reconnu pour la date ISO 8601 avec l'heure locale

Vous avez deux problèmes :TO_DATE ne reconnaît aucun composant de fuseau horaire ou fraction de seconde, vous devrez le convertir en horodatage avec fuseau horaire, et .s ce n'est pas comme ça que vous représentez les fractions de seconde de toute façon, vous avez besoin de .ff . Les modèles de format valides sont indiqués dans la documentation .

En les rassemblant, vous pouvez :

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                                             

Si vous le voulez vraiment comme date, vous devrez décider quoi faire avec les informations de fuseau horaire - soit supposer qu'il s'agit de l'heure locale (essentiellement l'ignorer), soit convertir en UTC ou dans un autre fuseau horaire. Cependant, vous voudrez peut-être vraiment le conserver comme horodatage avec fuseau horaire.