From: carapuz at gmail.com (Nic Nofamily) Date: Fri, 31 Mar 2006 09:16:56 +0600 Subject: [Pljava-dev] Has ResultSet.getDate() correct handling DayLight saving time? In-Reply-To: References: <442C4595.60900@tada.se> Message-ID: 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 : > 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 : > > 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 > > > > > > > >