Re: Bad value for type date - Mailing list pgsql-jdbc

From Oliver Jowett
Subject Re: Bad value for type date
Date
Msg-id 43072BE0.9000306@opencloud.com
Whole thread Raw
In response to Bad value for type date  (Prasanth <dbadmin@nqadmin.com>)
Responses Re: Bad value for type date
List pgsql-jdbc
Prasanth wrote:

> Below is a small program to test the JDBC date issue I have having.
>
> I am able to set the date "2/1/10000". But it fails to retrieve it.
>
> If it is invalid date then it should not even update the database right?

I can't reproduce this; the attached testcase produces this against my
8.0 install:

Inserting date: 10000-02-01 AD +1300
Got date: 10000-02-01 AD +1300
Got date: 10000-02-01 AD +1300

I get this using both the -310 driver and a build from CVS HEAD.

You'll need to give us a compilable testcase that shows the problem to
take this any further. The code you provided originally doesn't compile
out-of-the-box, is missing schema information, and has a syntactically
incorrect query..

It'd also help if you can reproduce your problem without involving a
RowSet implementation.

-O
import java.sql.*;
import java.util.Calendar;

public class TestDate2 {
    public static void main(String[] args) throws Exception {
        Class.forName("org.postgresql.Driver");

        Connection conn = DriverManager.getConnection(args[0]);
        Statement stmt = conn.createStatement();

        try {
            stmt.executeUpdate("DROP TABLE testdate2");
        } catch (SQLException e) {}

        stmt.executeUpdate("CREATE TABLE testdate2(d date)");
        stmt.executeUpdate("INSERT INTO testdate2(d) VALUES ('10000/02/01')");

    PreparedStatement ps = conn.prepareStatement("INSERT INTO testdate2(d) VALUES (?)");
    Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, 1);
    c.set(Calendar.DATE, 1);
    c.set(Calendar.YEAR, 10000);

    Date d = new Date(c.getTimeInMillis());
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd G Z");

    System.out.println("Inserting date: " + sdf.format(d));
    ps.setDate(1, d);
    ps.executeUpdate();

        ResultSet rs = stmt.executeQuery("SELECT d FROM testdate2");
    while (rs.next()) {
            d = rs.getDate(1);
            System.out.println("Got date: " + sdf.format(d));
    }
        rs.close();

        stmt.close();
        conn.close();
    }
}

pgsql-jdbc by date:

Previous
From: Al Dev
Date:
Subject: World-wide Stop Order on PERL,Python,Java::->> Use Ruby instead
Next
From: "Prasanth"
Date:
Subject: Re: Bad value for type date