I am not sure if you noticed the hours, minutes and seconds are chopped
No, I did notice. A java.sql.Date object is really a long value (the number of milliseconds between the date and January 1, 1970, 00:00:00 GMT.) So assuming you always handle a Date object as a Date object its value will remain constant. However, when you display a date, unless you format it as you wan't to see it, all you are doing is calling the default toString() method on that object. This method returns the date as a String formatted in the "date escape format" i.e. yyyy-mm-dd. It doesn't change the value of the long number which represents the date.