关于Java和MySQL时区不一致

解决项目中的问题

问题

项目中记录udp消息的日志用到了Timestamp

1
2
3
4
5
6
7
8
9
10
11
12
13
public class UdpRecord {

@Column(name="time",length = 255)
private Timestamp time;

public Timestamp getTime() {
return time;
}

public void setTime(Timestamp time) {
this.time = time;
}
}
1
2
3
4
5
6
udpRecord.setTime(getTime());
public Timestamp getTime(){
Date date = new Date();
Timestamp time = new Timestamp(date.getTime());
return time;
}

但是在数据库中发现存的时间并不是当前时间,但是在控制台打印得到的确实是当前时间。

解决

这是因为Java和MySQL时区不一致,其实也就是当前系统的时区和mysql的时区不一致,最简单的办法:

1
2
#数据库连接驱动
spring.datasource.url=jdbc:mysql://192.168.1.107/heater?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

加上serverTimezone=Asia/Shanghai即可。

:转载文章请注明出处,谢谢~