Re: ResultSet.getTimestamp(Calendar) off by one-hour
От | Roland Roberts |
---|---|
Тема | Re: ResultSet.getTimestamp(Calendar) off by one-hour |
Дата | |
Msg-id | 49BAC642.6090800@astrofoto.org обсуждение исходный текст |
Ответ на | Re: ResultSet.getTimestamp(Calendar) off by one-hour (Roland Roberts <roland@astrofoto.org>) |
Список | pgsql-jdbc |
Roland Roberts wrote: > Roland Roberts wrote: >> Okay, postgresql appears to be using the standard TZ offset >> regardless of whether or not DST is in effect on the day in question. > Hmmm, I *can* get the correct behavior IF I assign the environment > variable TZ=America/New_York before I run the client program. But I > don't need to do that when I'm talking to Oracle. For the Oracle > case, the database is on another host, both still in US/Eastern time > zone. > > Are there other ways to get PostgreSQL JDBC to understand the client > timezone w/o explicitly setting TZ? I'm trying to find an idiot-proof > (well, I'll settle for an idiot-resistant) method. Blah. It looks like this is actually a known Java bug, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6456628 Although the bug was posted in August 2006(!) against Java 1.5, the most recent comment is from Aug 2008 still complaining that it is not fixed. I don't know how Java comes up with the GMT-05:00, but changing /etc/sysconfig/clock from ZONE="America/New York" to ZONE="America/New_York" (Java naming convention with the underscore) is sufficient to get everything to work although when I now include System.out.println("default TZ=" + TimeZone.getDefault().getDisplayName()); in my code, it prints default TZ=Eastern Standard Time which is a lie, its Eastern Daylight Time. In spite of that, the correct value is inserted into PostgreSQL. roland -- PGP Key ID: 66 BC 3B CD Roland B. Roberts, PhD RL Enterprises roland@rlenter.com 6818 Madeline Court roland@astrofoto.org Brooklyn, NY 11220
В списке pgsql-jdbc по дате отправления: