目录
- 一、问题说明
- 二、问题分析
- 三、解决办法
- 1.Java日期向数据存
- 方法一:
- 方法二:
- 2.从数据库中取日期
- 最后
在Java中向MySQL数据库存取日期类型的数据时,可能会遇到一些常见问题,以下是一些关键点和解决办法:
一、问题说明
- MySQL支持多种日期时间类型,如
DATE、TIME、DATETIME、TIMESTAMP和YEAR。 - Java中处理日期时间主要使用
java.util.Date,java.sql.Date,java.sql.Time,java.sql.Timestamp, 以及Java 8引入的java.time.LocalDate,java.time.LocalTime,java.time.LocalDateTime等。 -
MySQL中我们常用的类型为
DATETIME类型,而Java中我们常用的类型为java.util.Date,这就遇到了转换问题,下面进行问题分析
二、问题分析
- mysql中的日期类
DATE、TIME、DATETIME、TIMESTAMP分别对应的是Java中sql包下的Date、Time、Timestamp,那么就问题就变成util包下与sql包下之间的类型转换问题了,这就变得简单了。
三、解决办法
1.Java日期向数据存
方法一:
insert into borrowing_tb (userid,bookid,brwtime)
values (2,8,"2024-06-29 19:49:00")

- 通过上面发现我们可以通过字符串日期向数据库插入日期,那么我们就可以通过
SimpleDateFormat类中的format方法先将util.Date类型转为字符串类型,再存入数据库,如果对SimpleDateFormat不太了解的同学可以点下面链接看我的之前发的博客哦 - Java日期类Date、SimpleDateFormat 日期格式类、Calendar详细介绍

方法二:

- 通过API我们发现
sql包下的日期类的构造方法的参数都是long类型的,而util包下包下的日期类都有一个获得long类型的方法

- 那么我们就可以使用
getTime()方法将util包下的日期作为sql包下构造方法的参数,这样我们就实现了util和sql日期的转换问题了,这样才创建的日期是一模一样的。
- 再使用PreparedStatement将sql类型日期存入数据库:
- 使用
PreparedStatement来防止SQL注入,并正确绑定日期时间值。例如,对于DATETIME和TIMESTAMP类型,可以直接使用setTimestamp方法。 - 方法与对应的类型不匹配,可能会造成下面图片中的情况
- 使用



2.从数据库中取日期

我们发现
sql包下的都是util.Date的子类,那么我们就只需向上转型就可以了,不用强转,直接向util.Datel类型的对象赋值即可,取值非常方便,只需要注意方法要用用好
-
结果集读取:
- 查询时,从ResultSet中读取日期时间值,使用相应的
getDate,getTime, 或getTimestamp方法。 - 如果使用Java 8日期时间API,可能需要手动转换ResultSet中的
java.sql.*类型到新的API类型。
- 查询时,从ResultSet中读取日期时间值,使用相应的
-
时间精度丢失:
- 确保MySQL表的日期时间字段精度与Java对象匹配。例如,如果MySQL的
DATETIME字段精度设为6(微秒),Java端也应处理到微秒级别。
- 确保MySQL表的日期时间字段精度与Java对象匹配。例如,如果MySQL的
最后
如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

![Spring学习01-[Spring实现IOC的几种方式]](https://img-blog.csdnimg.cn/direct/3f138876749d44a289a60d4050cd2db7.png)
















