Thread
-
JDBC driver throws SQLException while parsing timestamp
PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2001-01-25T11:28:57Z
Alexander Dietrich (adietrich@webantz.com) reports a bug with a severity of 2 The lower the number the more severe it is. Short Description JDBC driver throws SQLException while parsing timestamp Long Description Hi, there's a discrepancy between PreparedStatement.setTimestamp() and ResultSet.getTimestamp() related to a timestamp format that may or may not be valid (sorry I can't give a complete code sample): ----- I do something like this to store the timestamp: Connection conn = ConnectionFactory.getConnection(); PreparedStatement stmt = conn.prepareStatement(getInsertString()); [...] stmt.setTimestamp(5, new Timestamp(System.currentTimeMillis())); stmt.executeUpdate(); ----- This is an example of what ends up in the database: type: timestamp, value: "2001-01-25 11:33:19.50+01" (Checked with psql) ----- But when retrieving the data: [...] ResultSet rs = stmt.executeQuery(queryStr); Timestamp timestamp = rs.getTimestamp("CREATION_TIME"); An SQLException is thrown: Bad Timestamp Format at 19 in 2001-01-25 11:33:19.50+01 java.lang.Throwable() java.lang.Exception() java.sql.SQLException() org.postgresql.util.PSQLException(java.lang.String, java.lang.Object, java.lang.Object) java.sql.Timestamp org.postgresql.jdbc2.ResultSet.getTimestamp(int) java.sql.Timestamp org.postgresql.jdbc2.ResultSet.getTimestamp(java.lang.String) [...] ----- Obviously the getTimestamp() method chokes on the millisecond field in the timestamp. A timestamp like "2001-01-25 11:33:19+01" does not pose a problem. My configuration is: Server: RedHat 7.0 (x86), 2.2.16-22 postgresql-server-7.0.3-2 postgresql-7.0.3-2 postgresql-jdbc-7.0.3-2 Client: JVM: 1.2.2 inside VisualAge 3.5 Patch 2 JDBC driver: jdbc7.0-1.2.jar Regards, Alexander Dietrich Sample Code No file was uploaded with this report -
Re: JDBC driver throws SQLException while parsing timestamp
Bruce Momjian <pgman@candle.pha.pa.us> — 2001-01-26T20:10:02Z
I think this is fixed in 7.1beta. > Alexander Dietrich (adietrich@webantz.com) reports a bug with a severity of 2 > The lower the number the more severe it is. > > Short Description > JDBC driver throws SQLException while parsing timestamp > > Long Description > Hi, > > there's a discrepancy between PreparedStatement.setTimestamp() and > ResultSet.getTimestamp() related to a timestamp format that may or > may not be valid (sorry I can't give a complete code sample): > ----- > I do something like this to store the timestamp: > > Connection conn = ConnectionFactory.getConnection(); > PreparedStatement stmt = conn.prepareStatement(getInsertString()); > [...] > stmt.setTimestamp(5, new Timestamp(System.currentTimeMillis())); > stmt.executeUpdate(); > ----- > This is an example of what ends up in the database: > type: timestamp, value: "2001-01-25 11:33:19.50+01" > (Checked with psql) > ----- > But when retrieving the data: > > [...] > ResultSet rs = stmt.executeQuery(queryStr); > Timestamp timestamp = rs.getTimestamp("CREATION_TIME"); > > An SQLException is thrown: > > Bad Timestamp Format at 19 in 2001-01-25 11:33:19.50+01 > > java.lang.Throwable() > java.lang.Exception() > java.sql.SQLException() > org.postgresql.util.PSQLException(java.lang.String, java.lang.Object, java.lang.Object) > java.sql.Timestamp org.postgresql.jdbc2.ResultSet.getTimestamp(int) > java.sql.Timestamp org.postgresql.jdbc2.ResultSet.getTimestamp(java.lang.String) > [...] > ----- > > Obviously the getTimestamp() method chokes on the millisecond field > in the timestamp. A timestamp like "2001-01-25 11:33:19+01" does not > pose a problem. > > My configuration is: > Server: > RedHat 7.0 (x86), 2.2.16-22 > postgresql-server-7.0.3-2 > postgresql-7.0.3-2 > postgresql-jdbc-7.0.3-2 > > Client: > JVM: 1.2.2 inside VisualAge 3.5 Patch 2 > JDBC driver: jdbc7.0-1.2.jar > > Regards, > Alexander Dietrich > > Sample Code > > > No file was uploaded with this report > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026