jdbc problem with time
От | Laurette Cisneros |
---|---|
Тема | jdbc problem with time |
Дата | |
Msg-id | Pine.LNX.4.44.0207091305470.5606-100000@visor.corp.nextbus.com обсуждение исходный текст |
Список | pgsql-jdbc |
Any ideas on this? We have a table: xyzzy=# select sched_id, tod_start, tod_end from schedule where sched_id=1; sched_id | tod_start | tod_end ----------+-----------+--------------- 1 | 00:00:00 | 23:59:59.9990 Notice the millisecond values set for tod_end. The jdbc driver barfs when trying to read the time from the result set using the java code: Time t = rs.getTime("tod_end"); The stack trace from here looks like: java.lang.StringIndexOutOfBoundsException: String index out of range: 19 at java.lang.String.substring(String.java:1522) at org.postgresql.jdbc2.ResultSet.toTime(ResultSet.java:1586) at org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:385) at org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:612) at COM.NextBus.signad.SelectScheduleDetails.getObject(SelectScheduleDetails.java:30) at Here is the offending piece of code. It fails in the case where the time string looks like: "HH:MM:SS:mmmm". The code assumes that anything longer than 8 characters is a timestamp and tries to get a substring accordingly. However, the substring call fails, since this is a "time without time zone" and not an SQL timestamp. Here is the code: public static Time toTime(String s) throws SQLException { if (s == null) return null; // SQL NULL // length == 8: SQL Time // length > 8: SQL Timestamp try { return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11, 19)); } catch (NumberFormatException e) { throw new PSQLException("postgresql.res.badtime", s); } } Thanks for the help, --- Laurette Cisneros The Database Group (510) 420-3137 NextBus Information Systems, Inc. www.nextbus.com ---------------------------------- "Intelligence complicates. Wisdom simplifies." -- Mason Cooley
В списке pgsql-jdbc по дате отправления: