Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-01821:nierozpoznany format daty, błąd dla daty ISO 8601 z czasem lokalnym

Masz dwa problemy:TO_DATE nie rozpoznaje żadnych składników strefy czasowej ani ułamków sekund, będziesz musiał przekonwertować go na znacznik czasu ze strefą czasową i .s i tak nie reprezentujesz ułamków sekund, potrzebujesz .ff . Prawidłowe modele formatu są pokazane w dokumentacji .

Łącząc je, możesz zrobić:

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                                             

Jeśli naprawdę chcesz, aby była to data, musisz zdecydować, co zrobić z informacjami o strefie czasowej – albo załóż, że jest to czas lokalny (zasadniczo go zignoruj), albo przekonwertuj na UTC lub inną strefę czasową. Możesz jednak naprawdę chcieć zachować go jako znacznik czasu ze strefą czasową.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykład Oracle WHILE LOOP

  2. Oracle — zmaterializowany widok zmienia strukturę tak wolno

  3. Zapytaj Oracle o szczegóły błędu kodu ORA

  4. Jak wykonać instrukcje SQL Oracle za pomocą VBScript

  5. Walcząc ze sprężyną SimpleJdbcCall, aby wywołać funkcję Oracle