java向mysql插时间显示null

更新时间:02-03 教程 由 暮夏 分享

最近在使用Java连接MySQL进行数据插入时,发现一个奇怪的问题:时间显示为null。

经过对代码的仔细分析,发现问题在于数据库表中的时间字段类型为datetime,而在使用Java插入数据时,我们使用的是java.sql.Timestamp类型,这导致插入时间时出现了问题。

经过查阅相关资料,我们可以发现Timestamp会忽略时区的信息,而MySQL默认时区为UTC。因此,插入的时间会被MySQL认为是UTC时间,而在查询时会转换为当前系统的时区,因此可能会出现时间显示为null的情况。

为解决这一问题,我们可以在插入数据时,将Timestamp类型的时间转换为当前系统的时区,例如:

Timestamp time = new Timestamp(System.currentTimeMillis());Calendar cal = Calendar.getInstance();time.setNanos(0);time.setTime(time.getTime() + cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET));

这样就可以保证插入的时间和MySQL的时区一致,避免出现时间显示为null的问题。

声明:关于《java向mysql插时间显示null》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_5786626.html