getDate after call to updateDate
От | Prasanth |
---|---|
Тема | getDate after call to updateDate |
Дата | |
Msg-id | 43CC1A76.1050402@nqadmin.com обсуждение исходный текст |
Ответ на | Re: Bad value for type date (Prasanth <dbadmin@nqadmin.com>) |
Ответы |
Re: getDate after call to updateDate
(Oliver Jowett <oliver@opencloud.com>)
|
Список | pgsql-jdbc |
But when I use the latest 8.1-404 or even 8.2dev jdbc3 drivers I am observing a strange result. When I update a date in the resultset (say with 12/31/2005) and then call getDate it returns a date which is one day behind the value I have set (returns 12/30/2005). But it updates the database with the right date (12/31/2005). If I re fetch the same row then I can see the right value. I am running 7.4.7 version. Below if the code to reproduce the error. import java.sql.*; import java.util.Calendar; public class PostgresDate { public static void main(String[] args) throws Exception { Class.forName("org.postgresql.Driver"); Connection conn = DriverManager.getConnection("jdbc:postgresql://databases.nqadmin.com:5432/test_server", "postgres", "opelgt"); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); try { stmt.executeUpdate("DROP TABLE testdate2"); } catch (SQLException e) {} stmt.executeUpdate("CREATE TABLE testdate2(id int4 primary key, d date)"); stmt.executeUpdate("INSERT INTO testdate2(id, d) VALUES (1,'2005-02-10')"); Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH, 1); c.set(Calendar.DATE, 2); c.set(Calendar.YEAR, 2005); Date d = new Date(c.getTimeInMillis()); ResultSet rs = stmt.executeQuery("SELECT * FROM testdate2"); rs.next(); rs.updateDate("d", d); rs.updateRow(); d = rs.getDate("d"); System.out.println("Got date: " + d); rs = stmt.executeQuery("SELECT * FROM testdate2"); rs.next(); d = rs.getDate("d"); System.out.println("Date after refresh: " + d); rs.close(); stmt.close(); conn.close(); } } Thanks, -Prasanth. Prasanth wrote: >Hi Oliver, > >Thank you very much. > >-Prasanth. > >Oliver Jowett wrote: > > >>Prasanth wrote: >> >> >> >> >>>Below if the code with result set to reproduce the problem. >>> >>> >>As a workaround for the -310 driver, call refreshRow() after updateRow() >>and you should be able to retrieve values correctly. >> >>-O >> >>---------------------------(end of broadcast)--------------------------- >>TIP 9: In versions below 8.0, the planner will ignore your desire to >> choose an index scan if your joining column's datatypes do not >> match >> >> >> >> > >---------------------------(end of broadcast)--------------------------- >TIP 2: Don't 'kill -9' the postmaster > > > >
В списке pgsql-jdbc по дате отправления: