Обсуждение: setObject type for Interval objects
I have an SQL SELECT which contains an expressions of the form:- WHERE created < CURRENT_TIMESTAMP - ? where created is a TIMESTAMP field. As a parameter I want to pass an interval, so I used:- PGInterval interval = new PGInterval( intervalPeriod); stmt.setObject( 1, interval); but Postgresql objects with:- org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of org.postgresql.util.PGInterval. Use setObject() with an explicit Types value to specify the type to use. So I guess I need the three parameter setObject, but I do not know what type to pass to the third parameter. I have googled, but to no avail (I obviously asked the wrong question). David
David Goodenough wrote:
>
> I have an SQL SELECT which contains an expressions of the form:-
>
> WHERE created < CURRENT_TIMESTAMP - ?
>
> where created is a TIMESTAMP field. As a parameter I want to pass
> an interval, so I used:-
>
> PGInterval interval = new PGInterval( intervalPeriod);
> stmt.setObject( 1, interval);
>
> but Postgresql objects with:-
>
> org.postgresql.util.PSQLException: Can't infer the SQL type
> to use for an instance of org.postgresql.util.PGInterval.
> Use setObject() with an explicit Types value to specify
> the type to use.
Strange - here (postgresql-8.2-505.jdbc3.jar with JDK 1.5.0_12-b04)
the following code runs fine:
Connection conn = DriverManager.getConnection();
PreparedStatement stmt = conn.prepareStatement(
"SELECT current_timestamp - ?");
stmt.setObject(1, new PGInterval("2 days"));
ResultSet rs = stmt.executeQuery();
Yours,
Laurenz Albe