java中util.Date和数据库中datetime的操作! 需求: User对象里面有java.util.Date的birthday,我们需要存的格式为2001-01-01 01:01:01,mysql数据库中是datetime,当我们需要存入数据库或从数据库中取出来时,有一些细节必须注意!因为直接将java.util.Date存入数据库是不行的! 为了测试,我还在表中加了一个time的字段,类型为varchar。
存入数据库: 加入我们直接将birthday存入数据库:ps.setDate((java.sql.Date)user.getBirthday()),这样会出错,因为类型的差异,强转会报错! 方式一:(推荐) 所有我们需要使用到java.sql.Timestamp这个类来进行转换: Timestamp t = new Timestamp(user.getBirthay().getTime());
ps.setTimestamp(3, t);
这样就可以直接存入数据库!
方式二: 我们直接将birthday转换成特定格式的字符串String,存入数据库,这样也可以!: DateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String birthday = df.format(user.getBirthay());
ps.setString(3, birthday);//这样和下面这样都可以!
ps.setObject(3, birthday);
这样转换成字符串存进数据库没问题,数据库的datetime接受特定格式的字符串,这样存进数据库还是datetime类型的值!
从数据库中取出来:
取出来的时候就很简单了,因为java.sql.Timestamp是继承了java.util.Date,所有直接将取出来的值赋给birthdat就行了! Timestamp t = rs.getTimestamp(“birthday”);
user.setBirthay(t);
日期比较问题:
为了测试日期比较,排序,特意增加了一个字段time,time是varchar类型的,存的都是特定格式的日期字符串(注意是字符串), 当测试排序时,不管是tetime类型的birthday,还是varchar类型的time,都能比较和排序!