Here is the output of the program run. I also included user.timezone
Sun Microsystems Inc.1.6.0_21Java HotSpot(TM) 64-Bit Server VMmixed modeTimeZone:Asia/Karachi2009-04-15 00:00:00->2009-04-15 01:00:00.0I 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.Grittner@wicourts.gov>
To: Altaf Malik <mmalik_altaf@yahoo.com>
Cc: Samuel Gendler <sgendler@ideasculptor.com>; pgsql-jdbc@postgresql.org
Sent: Fri, January 7, 2011 2:00:55 AM
Subject: Re: [JDBC] Strange behaviour of rs.getTimestamp
Samuel Gendler <
sgendler@ideasculptor.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
--
Sent via pgsql-jdbc mailing list (
pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc