在Mysql数据库中日期跟时间有两种:
1、date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期,
2、dateitme就是可以储存日期同时也可以储存时间。 datetime可以保存1000-01-01到 9999-12-31的日期。
上面mysql数据库中birthday字段类型设置的是datetime,当我们需要存入数据库时,直接将java.util.Date存入数据库是不行的!
我往数据库插入的数据是这样的
Date date=new Date(); //获取一个Date对象 DateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //创建一个格式化日期对象 String birthday= simpleDateFormat.format(date); //格式化后的时间
这样得到的时间对象确实是 “yyyy-MM-dd HH:mm:ss“,程序运行下去应该没有事,但是控制台报错了,因为在实体类中设置字段birthday是使用的java.util.Date类型,然后我传过去自然就是错误的。
import java.util.Date; public class User{ private String id; private String username; private Date birthday; ……
需要进行转换,使用Timestamp对象,代码如下:
java.util.Date date = new java.util.Date(); // 获取一个Date对象 Timestamp timeStamp = new Timestamp(date.getTime()); // 将日期时间转换为数据库中的timestamp类型
使用这两行代码转换时间后,我们就可以往数据库插入”yyyy-MM-dd HH:mm:ss“类型。
通过Intellij IDEA查看继承关系,我们可以发现Timestamp对象也是继承了Date类
向mysql数据库插入datetime类型数据的两种方法
方式一:使用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);
推荐阅读:MySql数据库Timestamp、time、datetime 区别及使用详解
125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/1859.html