Re: timestamp moves when setting and getting a value from

From: Martin Keller <martin(dot)keller(at)unitedplanet(dot)de>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: timestamp moves when setting and getting a value from
Date: 2005-09-02 09:40:25
Message-ID: 43181E09.8010503@unitedplanet.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi Martin,

this issue was discussed in several threads a few weeks ago.
There is a patch by Oliver Jowett commited to the head branch of the
project.
It's not in the current 312 release.

****
Martin

Martin Taal wrote:

> Hi,
> I have a problem when saving and retrieving a timestamp from postgresql.
> When I save a timestamp and retrieve it it gets moved two hours (my
> timezoneoffset from gtm).
>
> For example when I store 2 Sept. 2005 10:12:12 + 2. I get 2 Sept.
> 12:12:12+2 back.
> When I look in postgresql (psql and then commandline select * from
> table) then I can see that it stores 2 Sept. 12:12:12+2 in the
> timestamp field although the time I pass in is 2 Sept. 2005 10:12:12 + 2.
>
> Environment:
> linux
> postgresql 8.0.2
> latest jdbc driver: 8.0-312 jdbc 2
>
> The field type in the database is timestamptz
>
> I debugged through the method setTimeStamp method and getTimeStamp
> methods in
> AbstractJDBC2Statement. My input to setTimeStamp:
> a timestamp 2 Sept. 10:12:12 CEST
> a calendar with timezone UTC
>
> This results in the database in the timestamptz field in a value: 2
> Sept. 2005 12:12:12 + 2.
> In gettimestamp this same value is returned.
>
> It seems that the changeTime method in AbstractJDBC2Statement actually
> adds two hours (should it not subtract 2 hours to get from CEST to
> GMT?) in addition the time zone of the computed value is set to CEST
> while I pass a UTC calendar (so the timestamp field in the database
> should actually contain: 2 Sept. 2005 8:12:12 + 0.
>
> As an extra info the setTimeStamp(int, timestamp, calendar) method
> calls setTimeStamp(int, timestamp) method. In this
> last method a new GregorianCalendar is created. The timezone of this
> new calendar is Europe/Amsterdam (my system timezone apparently).
>
> I tried different things like instead of passing in a calendar with
> UTC timezone, I tried Europe/Amsterdam. But this gave the same result.
> The timezone setting of postgresql is Europe/Amsterdam.
>
> Did I miss something or am I doing something wrong?
> I am sorry if I missed something obvious.
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Jan de Visser 2005-09-02 12:41:50 Re: Prepared statement not using an index
Previous Message Martin Taal 2005-09-02 09:29:24 Re: timestamp moves when setting and getting a value from