I had this problem with PostgreSQL, the simplest solution is to save your timestamp as a long and construct a Date object with this long value, I've seen some sites that say the problem is a JDBC driver problem, with the PostgreSQL JDBC driver. The problem lies with the getTimeStamp() method as far as I can remember, the short of all this is: use a long value, from System.getcurrentTimeMilliseconds().. write this value to the DB, create a new Date object passing in the long value as the parameter... Hope this helps, Oisin
On Monday 08 October 2001 09:04, Eddie wrote: > Thanks Frederik, > > But what I don't understand is why Date only contains the second part and > not the millisecond part and when it does ? That is, when I create a Date > object and print the millisecond part with the getTime() method, I do see > the millisecond part but when I receive something from the database, the > millisecond part is zero. Does this mean that is only zero when the date > field is handled by the JDBC part ?? > > Eddie > > ----- Original Message ----- > From: "Fredrik Lindgren" <[EMAIL PROTECTED]> > To: "Orion-Interest" <[EMAIL PROTECTED]> > Sent: Friday, October 05, 2001 6:50 PM > Subject: Re: Date conversion problem ?? > > > You are right that is not the JDBC driver that makes this happen. It is > > JDBC itself. java.sql.Timestamp is a subclass of java.util.Date but it > > returns the integral seconds when calling getTime(). It supports nano > > second precision with the getNanos() method. > > > > The javadoc includes this note: > > Note: This type is a composite of a java.util.Date and a separate > > nanoseconds value. Only integral seconds are stored in the > > java.util.Date component. The fractional seconds - the nanos - are > > separate. The getTime method will return only integral seconds. If a > > time value that includes the fractional seconds is desired, you must > > convert nanos to milliseconds (nanos/1000000) and add this to the > > getTime value. The Timestamp.equals(Object) method never returns true > > when passed a value of type java.util.Date because the nanos component > > of a date is unknown. As a result, the Timestamp.equals(Object) method > > is not symmetric with respect to the java.util.Date.equals(Object) > > method. Also, the hashcode method uses the underlying java.util.Date > > implementation and therefore does not include nanos in its computation. > > > > Due to the differences between the Timestamp class and the > > java.util.Date class mentioned above, it is recommended that code not > > view Timestamp values generically as an instance of java.util.Date. The > > inheritance relationship between Timestamp and java.util.Date really > > denotes implementation inheritance, and not type inheritance. > > > > I hope this helped > > > > /Fredrik Lindgren > > > > Ed Bras wrote: > > > Hellu, > > > > > > I retrieve a datetime field from the Ms SQL server. With a win sql > > client I > > > > see: > > > 2001-10-03 19:33:10.257 > > > > > > When I print the field in an EJB (I use CMP) the millisecond part is > > zero > > > > !!!: > > > Wed Oct 03 19:33:10 GMT+02:00 2001 > > > In milliseconds: 1002130390000 > > > > > > I had the same problem with the Postgres driver so I don't think it is > > the > > > > JDBC driver (Opta driver of i-net) > > > > > > Has anyone any idea what is happening and how I can solve this ?? > > > Hope to get an answer, otherwise I have to convert the datetime fields > > in > > > > the database to a long to store it in milliseconds, which isn't very > > elegant > > > > I think !? > > > > > > Eddie --
