date_trunc org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei oder in der Nähe von "$ 1"

9

Ich erhalte diesen Fehler beim Ausführen dieses Java / JDBC-Codes. Irgendwelche Ideen, wie man es umgehen kann?

Scheint sich über den Parameter in der Funktion date_trunc zu beschweren?

org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei oder in der Nähe von "$ 1" Position: 100

%Vor%

Java-Code:

%Vor%

resultierende Abfrage, die in pgAdmin in Ordnung ausgeführt wird:

%Vor%     
sv. 04.02.2014, 00:11
quelle

2 Antworten

13

Bei Verwendung der Syntax type 'string' in timestamp '2014-11-11 -05:00:00' muss der angegebene Wert eine Konstante und kein Parameter sein. Es wird von der SQL-Engine in der Parse-Phase interpretiert und in eine interne Timestamp-Darstellung konvertiert, bevor die tatsächliche Ausführung stattfindet und bevor die Werte für die Parameter bekannt sind.

Wenn also timestamp auftritt, erzeugt der Parser einen Syntaxfehler, weil keine literale Zeichenfolge ist.

Auf der anderen Seite wird der Wert von cast( as timestamp) bei Ausführung erzeugt, also sollte dies verwendet werden.

Was die Syntax aus der Sicht von JDBC angeht, sollte cast(? as timestamp) in Ordnung sein. Die PostgreSQL-spezifische Syntax ?::timestamp mit doppelten Doppelpunkten funktioniert wahrscheinlich ebenfalls.

    
Daniel Vérité 04.02.2014, 15:57
quelle
0

Ich habe einen solchen Fehler gesehen, wenn eine der jdbc-Verbindungs-URL-Komponenten null ist.

z. Verbindungs-URL-Komponenten wie DB-Hostname, Datenbankname, Benutzer oder Kennwort sind null.

Bitte schauen Sie dort nach und Sie sollten einen Hinweis finden.

    
muks 15.04.2015 16:30
quelle

Tags und Links