2017-09-22 4 views
-1

Ich muss SQL-Abfragen auf Oracle SQL Developer testen. Diese Abfragen enthalten Zeitstempel Literale im FormatZeitstempel-Literal in Oracle SQL Developer

{ts 'yyyy-mm-dd hh:mm:ss.fff'}

Oracle SQL Developer scheint nicht diese Syntax zu akzeptieren, das Symbol { Fehler verursacht ORA-00911: ungültiges Zeichen.

Kann ich irgendetwas tun?

EDIT

Der SQL-Editor rät mir, dass { nicht erlaubt ist. Ich versuchte mit zwei anderen Tools (DbVisualizer und DBeaver), beide mit dem Oracle Thin Treiber, alles funktioniert gut.

Allerdings möchte ich immer noch diese Syntax in Oracle SQL Developer verwenden, weil es interessante Funktionen hat. Die Abfragen, die ich testen muss, werden nicht von mir geschrieben, die Syntaxänderung ist keine Option.

+0

Dieser Fehler stammt nicht von SQL Developer, ist von Oracle selbst. Suchen Sie nach "oracle timestamp literal", um Informationen zum Schreiben dieser Literale zu erhalten. –

+0

SQL Developer deaktiviert einfach die JDBC-Escape-Verarbeitung im JDBC-Treiber, deshalb können Sie '{ts 'JJJJ-MM-TT hh: mm: ss.fff'}' nicht verwenden. Es gibt nichts, was Sie in SQL Developer tun können. Und Oracle kümmert es nicht und behauptet, dass es kein Fehler ist: https://community.oracle.com/message/14068970#14068970 –

+0

@a_horse_with_no_name Ihr ist die einzige nützliche Antwort –

Antwort

0

Sie CAST

select to_char(cast(sysdate as timestamp),'DD-MON-YYYY HH24:MI:SS.FF') from dual 
+0

'Cast (Sysdate als Timestamp)' ist nutzlos –

0

Verwendung eines tatsächlichen verwenden können SQL-Zeitstempel-Literal:

TIMESTAMP 'yyyy-mm-dd hh:mm:ss.fff' 

Was Sie verwendeten, ist die JDBC escape syntax, die von JDBC-Treibern, aber nicht von der Oracle-Datenbank selbst unterstützt wird.

+1

SQL Developer unterstützt JDBC-Escapes nicht, da die Escape-Verarbeitung im JDBC-Treiber deaktiviert wird. –

Verwandte Themen