Java.util.date 与 java.sql.date 区别和转换
java.util.Date 是 java.sql.Date 的父类(注意拼写)
前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
后者之后在读写数据库的时候用他,因为 PreparedStament 的 setDate()的第 2 参数和 ResultSet
的
getDate()方法的第 2 个参数都是 java.sql.Date 转换是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反过来是一样的。
java.util.Date 实际是一个时间戳,它的数值是年月日包括当前的时间
java.sql.Date 也是一个时间戳,但它把当前的时间剪掉了,保证它一定是那个日期的 0 点 0
分 0 秒的时间戳
所以如果你用 new java.util.Date()会得到当前时间
但如果用 new java.sql.Date(new java.util.Date().getTime()),得到的时间会是那一天的 0 点 0
分 0 秒
格式如下:
java.util.Date 是 年-月-日 时:分:秒.毫秒
java.sql.Date 是 年-月-日
java.sql.Time 是 时:分:秒
java.sql.Timestamp 是 年-月-日 时:分:秒
1、将 java.util.Date 转换为 java.sql.Date
java.sql.Date sd;
java.util.Date ud;
//initialize the ud such as ud = new java.util.Date();
sd = new java.sql.Date(ud.getTime());
2、若要插入到数据库并且相应的字段为 Date 类型
可使用 PreparedStatement.setDate(int ,java.sql.Date)方法
其中的 java.sql.Date 可以用上面的方法得到
也可以用数据库提供 TO_DATE 函数
比如 现有 ud
TO_DATE(new SimpleDateFormat().format(ud,"yyyy-MM-dd HH:mm:ss"),
"YYYY-MM-DD HH24:MI:SS")
注意 java 中表示格式和数据库提供的格式的不同