现象:
用Mysql5.6出现时间问题Incorrect datetime value: '' for column'createtime'
在向数据库插入当前时间的时候报出的错误。刚开始还以为是自己的代码写的有问题,可是对着源码看,发现没有问题呀?那怎么老师那里可以向数据库顺利插入数据库,而我这里运行起来却报了错误。这是怎么回事儿?
后来让亮亮帮忙看了看,他当时是把数据库订单表oders里头的订单时间数据类型改了,然并卵。此路不通。 一头扎进百度,发现关于这个问题,“先人们”都经过自己的头破血流给了我们很好的建议。突然发现此处就是个坑,完了还是那种让人前仆后继的那种坑。所以,留下短文一篇,希望看到的人不要再毅然决然的入坑了。
解决方法:
1.跟开发环境有关。视频里头跟咱们还是有一两个代沟的,建议引入新版本的mysql连接的jar包,替换掉原来的。
MySQL驱动包mysql-connector-java-5.1.31.jar
经过本人测试,此方法可行可靠。
2.后台转化。
第一种:
Date time= newjava.sql.Date(new java.util.Date().getTime());
第二种:
java用PreparedStatement来setDate,用问号的形式给日期问号赋值
pstmt.setTimestamp(8, newTimestamp(System.currentTimeMillis()));
pstmt.setDate(1, newjava.sql.Date(date1.getTime()));
pstmt.setDate(2, newjava.sql.Date(date2.getTime()));
第三:
其实向MySQL数据库里插入时间字段也是很容易的,只要设置为java.util.Date类型后,以Hibernate的Pojo类对象为例,pojo.set(newjava.util.Date());就可用了。
小结
解决的方法有很多种,君找一种适合自己的即可。在敲SSH的过程中抱着一种这个问题我一定可以找到解决方法的心态,干劲十足。这个项目让我享受解决问题的乐趣。希望你也可以。