Java连接mysql常遇时间问题

文章讲述了在Java开发中遇到的时区转换问题,特别是在与MySQL数据库交互时,如何通过设置`serverTimezone`参数避免8小时的时差误差。此外,讨论了在数据库表中利用`CURRENT_TIMESTAMP`自动管理创建时间和修改时间的方法,以及如何在JavaPojo类中使用LocalDateTime处理数据库的时间戳,简化日期格式转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 时区转换问题

相信大多数人都遇见过数据库时间提取到Java对象之后,发生时间不一致的问题

连接数据库的时候若不设置,就会引发时区转换的问题,其原因是因为:
咱们所在时区为东八区,而默认时区为0区,差距八个小时,所以每次在与数据库交互时就会发生八小时的误差,
若要解决此问题,就要在连接数据库时设置配置:

jdbc:mysql://localhost:3306/friend?useSSL=false&serverTimezone=Asia/Shanghai

黄色字体便是设置的时区,设置之后在与mysql交互的时候就不会发生时区的问题了。

2.数据库字段创建时间和修改时间

很多的数据库表都需要有创建时间和修改时间,此时就会引发许多问题

如果是在Java类中自己设置时间过于麻烦,此时便可以在数据库建表的时候设置

 create_time   timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
 update_time   timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',

创建表的时候进行以上的设置便能在插入字段和修改字段的时候,数据库自动修改时间

3.数据库时间转换问题

数据库的timestamp时间为时间戳,如果转换到Java里面就会遇见一些问题

若是Java字段直接用date数据接收的话也可以,但是和前端交互的时候就会有格式问题,date的格式直接发送给前端的话,用户看的话不是特别方便,如果每次发送给前端都要转换就显得有些麻烦
此时可以在pojo类中设置为localdatetime类型,修改一下set代码,便可成功接收.

private LocalDateTime createTime;

public void setCreateTime(Date createTime){
        LocalDateTime localDateTime = createTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        this.createTime = localDateTime;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱发博客的嗯哼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值