[Pljava-dev] Has ResultSet.getDate() correct handling DayLight saving time?

Nic Nofamily carapuz at gmail.com
Fri Mar 31 03:16:56 UTC 2006


And this code in Date.c


static jvalue _Date_coerceDatum(Type self, Datum arg)
{
	jlong date = (jlong)(DatumGetDateADT(arg) + EPOCH_DIFF);

	jvalue result;
	date *= 86400L;	// Convert to seconds
	date += Timestamp_getCurrentTimeZone();	// Add local timezone
	result.l = JNI_newObject(s_Date_class, s_Date_init, date * 1000);
	return result;
}

date += Timestamp_getCurrentTimeZone();	// Add local timezone
may be so ????
date +=Timestamp_getCurrentTime(date);
--------------------
WBR, NiC

2006/3/31, Nic Nofamily <carapuz at gmail.com>:
> But d.getTime() return different values when I called the same code from
> pljava.jdbc and postgresql.jdbc on same machine with same JVM. The diff was
> 3600000 msek before for pljava.
> :(   TimeZone.getDefault() at both pljava.jdbc and postgresql.jdbc equals
>  ---------
> WBR, NiC
>
> 2006/3/31, Thomas Hallgren <thomas at tada.se>:
> > Hi Nic,
> > I don't think the returned date as such is incorrect. The problem occurs
> > when you represent the date as a string. What timezone do you use when
> > you do that? Do you simply use d.toString() ? If so, the default
> > timezone for your JVM is incorrect and that's the source of the problem.
> >
> > Regards,
> > Thomas Hallgren
> >
> > Nic Nofamily wrote:
> > > Hi all!
> > > I have a little trouble with my pljava functions last night:(
> > > --------------
> > > here config:
> > > Java HotSpot(TM) Server VM (build 1.5.0_06-b05, mixed mode)
> > > Debian Sarge
> > > pljava 1.2.0 compiled from source
> > > postgresql 8.1.3 installed from debian backports
> > > ---------------
> > > ResultSet.getDate for  to_date('01/11/2005','DD/MM/YYYY') returns
> > > 31/10/2005 for pljava jdbc driver
> > > the same java code using postgresql jdbc driver works  fine:(
> > >
> > > I discovered that wrong result depend on DayLight Saving time
> > > and i wrote workaround on ObjectResultSet.getDate()
> > >
> > > 	public Date getDate(int columnIndex)
> > > 	throws SQLException
> > > 	{
> > > 		Date d = (Date)this.getValue(columnIndex,Date.class);
> > > 		if(!java.util.TimeZone.getDefault().inDaylightTime(d)){
> > >                     d = new
> > >
> >
> java.sql.Date(d.getTime()+java.util.TimeZone.getDefault().getDSTSavings());
> > >                 }
> > > 		return d;
> > > 	}
> > >
> > > now my pljava code works good, but that's wrong way:(
> > > What are you comments, developers?:)
> > > PS: sorry for my English,I am Russian:)
> > > _______________________________________________
> > > Pljava-dev mailing list
> > > Pljava-dev at gborg.postgresql.org
> > > http://gborg.postgresql.org/mailman/listinfo/pljava-dev
> > >
> >
> >
>



More information about the Pljava-dev mailing list