Обсуждение: Postgres JDBC driver : problem with timestamps.
Using the JDBC drivers (for 1.2) from the postgresql-7.0.2 rpm distribution I cannot read back a timestamp value I just inserted in a column (column type "timestamp") with the same application. This little java code fails : --------------------------- import java.sql.*; public class test { public static void main(String[] args) throws Exception { Class.forName("org.postgresql.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost/test", "test", ""); PreparedStatement stmt = conn.prepareStatement("insert into test values (?)"); stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); stmt.executeUpdate(); Statement reader = conn.createStatement(); ResultSet rs = reader.executeQuery("select * from test"); while(rs.next()){ System.out.println(rs.getTimestamp(1)); } } } Running this code gives : Exception in thread "main" Bad Timestamp Format at 19 in 2000-06-14 14:32:40.46-04at org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:447)at test.main(test.java:18) Any idea? -- Vincent Trussart trussarv@cirano.umontreal.ca Cirano Québec
Hi Vincent, We had a discussion on this very issue on this mailing list last week. If you go to http://www.postgresql.org/mhonarc/pgsql-interfaces/2000-06/threads.html and search the page for "Timestamps" you'll see the thread. The first message in the thread includes a patch that's been working for me. HTH Regards, Jim -- Vincent Trussart wrote: > > Using the JDBC drivers (for 1.2) from the postgresql-7.0.2 rpm > distribution > I cannot read back a timestamp value I just inserted in a column (column > type "timestamp") > with the same application. This little java code fails : > > --------------------------- > import java.sql.*; > > public class test { > > public static void main(String[] args) throws Exception { > > Class.forName("org.postgresql.Driver").newInstance(); > Connection conn = > DriverManager.getConnection("jdbc:postgresql://localhost/test", "test", > ""); > PreparedStatement stmt = conn.prepareStatement("insert into test > values (?)"); > stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); > > stmt.executeUpdate(); > > Statement reader = conn.createStatement(); > ResultSet rs = reader.executeQuery("select * from test"); > while (rs.next()){ > System.out.println(rs.getTimestamp(1)); > } > } > } > > Running this code gives : > > Exception in thread "main" Bad Timestamp Format at 19 in 2000-06-14 > 14:32:40.46-04 > at org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:447) > at test.main(test.java:18) > > Any idea? > > -- > Vincent Trussart > trussarv@cirano.umontreal.ca > Cirano > Québec
This was fixed a couple of weeks ago... -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council -----Original Message----- From: Vincent Trussart [mailto:trussarv@CIRANO.UMontreal.CA] Sent: Wednesday, June 14, 2000 7:42 PM To: petermount@it.maidstone.gov.uk; pgsql-interfaces@postgresql.org Subject: [INTERFACES] Postgres JDBC driver : problem with timestamps. Using the JDBC drivers (for 1.2) from the postgresql-7.0.2 rpm distribution I cannot read back a timestamp value I just inserted in a column (column type "timestamp") with the same application. This little java code fails : --------------------------- import java.sql.*; public class test { public static void main(String[] args) throws Exception { Class.forName("org.postgresql.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost/test", "test", ""); PreparedStatement stmt = conn.prepareStatement("insert into test values (?)"); stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); stmt.executeUpdate(); Statement reader = conn.createStatement(); ResultSet rs = reader.executeQuery("select * from test"); while(rs.next()){ System.out.println(rs.getTimestamp(1)); } } } Running this code gives : Exception in thread "main" Bad Timestamp Format at 19 in 2000-06-14 14:32:40.46-04at org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:447)at test.main(test.java:18) Any idea? -- Vincent Trussart trussarv@cirano.umontreal.ca Cirano Québec