Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-01821:Datumsformat nicht erkannt Fehler für ISO 8601-Datum mit Ortszeit

Sie haben zwei Probleme:TO_DATE keine Zeitzonenkomponenten oder Sekundenbruchteile erkennt, müssen Sie es in einen Zeitstempel mit Zeitzone und .s konvertieren stellen Sie Sekundenbruchteile sowieso nicht dar, Sie brauchen .ff . Die gültigen Formatmodelle werden in der Dokumentation gezeigt .

Wenn Sie diese zusammenfügen, können Sie Folgendes tun:

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                                             

Wenn Sie es wirklich als Datum haben möchten, müssen Sie entscheiden, was Sie mit den Zeitzoneninformationen tun möchten - entweder davon ausgehen, dass es Ortszeit ist (im Wesentlichen ignorieren), oder in UTC oder eine andere Zeitzone konvertieren. Vielleicht möchten Sie es aber wirklich als Zeitstempel mit Zeitzone behalten.