Bug in TimestampUtils.java?

Lists: pgsql-jdbc
From: Richard Cook <awhig(at)yahoo(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Bug in TimestampUtils.java?
Date: 2006-11-09 20:16:29
Message-ID: 20061109201629.17691.qmail@web60221.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Hi All,

I recently ran into a problem that was partially caused
by some behaviour I found in TimestampUtils.java. To me it does not
seem right...

I retrieved a Timestamp Column from Postgres as a
Date. The data in the database had a timezone of GMT -0500, the current
time was also in GMT -0500. If you look at the date that is returned
from resultSet.getDate() on a Timestamp column, the timezone for the
Date object is -0400. I would think that it should be -0500.

Here
is some sample code that illustrates the bug. Because TimestampUtils
does not have a public construct I made my own public class from the
source, to use in this example...

Thanks,
Rich

TODAY: 2006-11-09 15:06:31 -0500
Date String: 2006-10-29 23:00:00-05
Parsed date '2006-10-29 23:00:00-05' in zone
America/New_York as 2006-10-29 AD 00:00:00 -0400 (millis=1162094400000)
Converted Date: 2006-10-29 00:00:00 -0400

TimestampUtils utils = new TimestampUtils(true);

SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss Z");

Date theTime;
try {

System.out.println("TODAY: " + formatter.format(new Date()));
String dateString = "2006-10-29 23:00:00-05";
System.out.println("Date String: " + dateString);
theTime =
utils.toDate(null,dateString);
System.out.println("Converted Date: " + formatter.format(theTime));

} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}


From: imad <immaad(at)gmail(dot)com>
To: "Richard Cook" <awhig(at)yahoo(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug in TimestampUtils.java?
Date: 2006-11-09 21:54:15
Message-ID: 1f30b80c0611091354x4a9b4cebk3bd0643e5d5b8a18@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

On 11/10/06, Richard Cook <awhig(at)yahoo(dot)com> wrote:
>
> Hi All,
>
> I recently ran into a problem that was partially caused by some behaviour I
> found in TimestampUtils.java. To me it does not seem right...
>
> I retrieved a Timestamp Column from Postgres as a Date. The data in the
> database had a timezone of GMT -0500, the current time was also in GMT
> -0500. If you look at the date that is returned from resultSet.getDate() on
> a Timestamp column, the timezone for the Date object is -0400. I would think
> that it should be -0500.

I suggest you to confirm it with your database server. Try developing the same
scenario without JDBC and see what you get because connectors are not
supposed to play with the data they get. It is the server who formats everything
before sending it to the client.

--Imad
www.EnterpriseDB.com