Re: jdbc problem with time
От | Barry Lind |
---|---|
Тема | Re: jdbc problem with time |
Дата | |
Msg-id | 3D2B87BC.8010904@xythos.com обсуждение исходный текст |
Ответ на | Re: jdbc problem with time (Laurette Cisneros <laurette@nextbus.com>) |
Ответы |
Re: jdbc problem with time
(Laurette Cisneros <laurette@nextbus.com>)
Re: jdbc problem with time (Laurette Cisneros <laurette@nextbus.com>) |
Список | pgsql-jdbc |
Laurette, I have committed a fix for this bug. Please try the latest dev build on the website to see that it fixes your problem. thanks, --Barry Laurette Cisneros wrote: >Yes, the bug still exists in the latest development driver. > >Thanks, > >L. >On Tue, 9 Jul 2002, Barry Lind wrote: > > > >>Laurette, >> >>What version are you using? Can you still reproduce the problem with >>the latest development drivers (which you can download from >>jdbc.postgresql.org)? >> >>thanks, >>--Barry >> >>Laurette Cisneros wrote: >> >> >> >>>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 >>> >>> >>>---------------------------(end of broadcast)--------------------------- >>>TIP 2: you can get off all lists at once with the unregister command >>> (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) >>> >>> >>> >>> >>> >> >> > > >
В списке pgsql-jdbc по дате отправления: