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

ORA-01821:datoformat ikke genkendt fejl for ISO 8601 dato med lokal tid

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.



  1. MySQL IF/CASE-syntaks, der kalder forskellige SELECT-sætninger

  2. Oracle Unique Constraint baseret på kolonneværdi

  3. hvordan man beregner tid brugt på min app efter tidsstempel

  4. Deltag i 2 tabeller om dynamisk skiftende kolonne