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 по дате отправления:

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: reading an oidvector field error
Следующее
От: Oliver Jowett
Дата:
Сообщение: Re: getDate after call to updateDate