Re: Strange behaviour of rs.getTimestamp

From: Altaf Malik <mmalik_altaf(at)yahoo(dot)com>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: Samuel Gendler <sgendler(at)ideasculptor(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Strange behaviour of rs.getTimestamp
Date: 2011-01-07 15:31:26
Message-ID: 948897.28558.qm@web110410.mail.gq1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Here is the output of the program run. I also included user.timezone

Sun Microsystems Inc.
1.6.0_21
Java HotSpot(TM) 64-Bit Server VM
mixed mode
TimeZone:Asia/Karachi
2009-04-15 00:00:00->2009-04-15 01:00:00.0

I am using UBUNTU 10.10 64 bit.
I don't see this behaviour with other timezones. For example, I set my TZ to
PST, GMT and the values were correct.

I debugged little further and found that the value is changed in the following
code:

Calendar c = new GregorianCalendar();
c.set(Calendar.ERA, 1);
c.set(Calendar.YEAR, 2009);
c.set(Calendar.MONTH, 4-1);
c.set(Calendar.DAY_OF_MONTH, 15);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Timestamp ts = new Timestamp(c.getTime().getTime());

In the specific scenario, if you print ts, it shows hour value as 1 only on
this specific date. So obviously, something seems wrong with JDK or my timezone
data.

My point is, that when we don't want the value interpreted in different
timezones (we are using timestamp and not timestamp with timezone), we should
not use Calander to convert value to a timestamp when we exactly have
year,month,day,hour,minute and second values.

-- Altaf Malik

________________________________
From: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: Altaf Malik <mmalik_altaf(at)yahoo(dot)com>
Cc: Samuel Gendler <sgendler(at)ideasculptor(dot)com>; pgsql-jdbc(at)postgresql(dot)org
Sent: Fri, January 7, 2011 2:00:55 AM
Subject: Re: [JDBC] Strange behaviour of rs.getTimestamp

Samuel Gendler <sgendler(at)ideasculptor(dot)com> wrote:

> It might also be potentially revealing if you print out the
> default timezone and locale for the jvm in question as well.

Good point. In addition to the system properties printed from what
I posted, please include the "user.timezone" system property.

-Kevin

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Radosław Smogura 2011-01-07 16:54:51 Re: Strange behaviour of rs.getTimestamp
Previous Message Marc 2011-01-07 09:59:34 Re: text type handling