Be careful about that with java.sql.Date.
To demonstrate the problem:
public class TestDate
{
public static void main(String[] args)
throws InterruptedException
{
java.util.Date utilDate = new java.util.Date(System.currentTimeMillis());
java.sql.Date sqlDate1 = new java.sql.Date(utilDate.getTime());
Thread.sleep(20L);
utilDate = new java.util.Date(System.currentTimeMillis());
java.sql.Date sqlDate2 = new java.sql.Date(utilDate.getTime());
System.out.println(sqlDate1 + " equals " + sqlDate2 + " ? " + sqlDate1.equals(sqlDate2));
java.sql.Timestamp ts = new java.sql.Timestamp(sqlDate1.getTime());
System.out.println(ts);
ts = new java.sql.Timestamp(sqlDate2.getTime());
System.out.println(ts);
}
}
I get the following results:
2005-10-13 equals 2005-10-13 ? false
2005-10-13 09:17:40.431
2005-10-13 09:17:40.461
Unfortunately, the burden is on the application programmer
to provide a ms value which is at midnight for the default
time zone for the JVM when using that constructor. I can't
understand that as a design choice, but that's the current
reality.
-Kevin
>>> Roland Walter <rwa@mosaic-ag.com> 10/13/05 4:10 AM >>>
The conversion works as the following, i. e.:
java.util.Date date = new java.util.Date(System.currentTimeMillis());
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
It is the same for the conversion to java.sql.Date.