I defined my registerDate field as a Date type, more specific, a java.util.Date, when i retrive data from database, it is fine:
but when i want to save it back to database: ps.setDate(7,user.getRegisterDate()); cannot compile it because it is not expected Date type, why is there no problem with the first statement. for the second statement, may i just simply cast its type? just like: ps.setDate(7,(java.sql.Date)user.getRegisterDate());
java.util.Date is like a timestamp, it stores date information as well as time information, whereas java.sql.Date is supposed to store only Date information, time information should have been set to 0 or whatever the equivalent of 0 should be. There is more information on that in the API docs.
Also, java.sql.Date is a subclass of java.util.Date, so any method that accepts java.util.Date will also accept a java.sql.Date, but a method defined with format parameter type java.sql.Date will not accept an argument of type java.util.Date.
You cannot cast it, unless the value was initially created as java.sql.Date, and then upcast to java.util.Date. Try something like
In this thread Peter van der Linden made some interesting observations about using java dates.
The future is here. It's just not evenly distributed yet. - William Gibson
Consultant @ Xebia. Sonny GillTweets