ist Ich habe Tabellenname auf Oracle 12c, die Spalte_Name1 mit Datentyp "TIMESTAMP (6) mit Zeitzone" hat. Ich benutze SQL Developer."AM/A.M. Oder PM/P.M. erforderlich" -Fehler, obwohl AM
Wenn ich etwas aus diesem column_name1 mit SQL Developer auswählen, sehe ich das Datum wie: 19-SEP-17 03.19.55.000000000 PM +00:00
, die in UTC ist.
Wenn ich das gleiche Format in meinem SQL verwende und es als String in WHERE-Klausel gebe, funktioniert es gut. Beispiel:
select column_name1 from table_name where column_name1 = '19-SEP-17 03.19.55.000000000 PM +00:00';
Aber ich weiß, es wird empfohlen, String in Situationen wie diesem zu konvertieren. Wenn ich versuche, dies mit TO_TIMESTAMP zu tun, finde ich nicht das korrekte Format, das in SQL hinzugefügt werden muss.
Was ich versucht habe, ist:
select column_name1 from table_name where column_name1 = TO_TIMESTAMP('19-SEP-17 03.19.55.000000000 PM +00:00', 'DD-MON-YYYY HH:MI:SS.FF A.M. TZH:TZM');
Und obwohl AM/PM schon da ist, bekomme ich Fehler noch als: AM/A.M. or PM/P.M. required
Ich habe versucht, Hinzufügen von 'NLS_DATE_LANGUAGE = American' als auch aber immer noch denselben Fehler.
Was fehlt mir hier? Wie kann ich das TO_TIMESTAMP-Format ändern, damit ich diese Zeichenfolge in TIMESTAMP umwandeln kann?
Vielen Dank für Ihre Antwort und Entschuldigung für die Überprüfung dieser sehr spät. Ich änderte schließlich das Standard-Zeitstempelanzeigeformat in Oracle SQL Developer und änderte es in 'YYYY-MM-DD HH24.MI.SSXFF' und für Zeitstempel mit Zeitzone' YYYY-MM-DD HH24.MI.SSXFF TZR'. Ich habe es aus Tools -> Einstellungen -> Datenbank -> NLS – 300
@ 300 - Die meisten Entwickler bevorzugen das 24-Stunden-Format (weniger Verwirrung, weniger Möglichkeiten für lästige Regeln wie diese). AM/PM würde für Nicht-Tech- "Verbraucher" -Berichte verwendet werden. – mathguy