Differences between java.util.Date and java.sql.Date are as follows:
Java.util.Date | Java.sql.Date |
In java.util.Date DATE datatype stores the time information. | It maps to the SQL DATE datatype that doesn’t store time information. Therefore, it’s recommended to use over java.util.Date as java.sql.Date doesn’t store second, minute and hour info. |
The toString() method of java.util.Date always returns the date in string format monddhh:mm:sszzzyyyy | toString() method of java.sql.Date returns the date in yyyy-mm-ddformat.s |
In Java application, java.util.Date refers to a specific instance of time. Without time zone and with millisecond precision. java.util.Date object gives both date and time information | Whereas, java.sql.Date object gives only date information. |
Java.util.Date is super-class of java.sql.Date. | Therefore, java.sql.DATE inherits all the public method of java.util.DATE like getSeconds(), getMinutes(), getHours() and so on. This override all the time operation from the superclass i.e. java.util.DATE |
Now, which one to use it totally depends on the field of SQL type.
- PreparedStatement has setters for all three values, #setDate() being the one for sql.Date, #setTime() for sql.Time and #setTimestamp() for sql.Timestamp.
Note: If you are using ps.setObject(fieldIndex, utilDateObject) ; then you can give the normal util.Date to most JDBC drivers.