关系:
java.sql.date是从java.util.date继承过来的;也就是说java.util.date是java.sql.date的父类
区别:
java.sql.date只有日期没有具体时间(时、分、秒);而java.util.date是有日期和具体时间以及包括星期;
而我们经常通过java应用程序向数据库中插入Date类型的数据时就要考虑这两种时间数据的转换,否则程序容易报错。
插入数据库中的Date一般都是指需要日期而不需要具体时分秒的,而在java中使用的util的Date,所以需要将父类向子类转换。
例如:向数据库中插入一条记录
static void create(String name, Date birthday, float money)
throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JdbcUtils.getConnection();
// conn = JdbcUtilsSing.getInstance().getConnection();
// 3.创建语句
String sql = "insert into user(name,birthday, money) values (?, ?, ?) ";
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setDate(2,birthday); ///111111111111111111111111111
ps.setDate(2, new java.sql.Date(birthday.getTime()));///22222222222222222222222222
ps.setFloat(3, money);
// 4.执行语句
int i = ps.executeUpdate();
System.out.println("i=" + i);
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
比较1和2,只有2是正确的。
因为java程序中的Date是util包中的,而要插入数据库中的Date是sql内的,所以需要进行转换
new java.sql.Date(birthday.getTime());得到2012-11-03这种形式