我有一个带有日期字段的 JPA 实体被持久化到 Mysql DateTime 中。
场地:
@Column(name = "CREATION_DATE")
private Date creationDate;
Run Code Online (Sandbox Code Playgroud)
列:
CREATION_DATE日期时间 DEFAULT NULL,
二传手:
request.setCreationDate(new Date());//Value set to current date
Run Code Online (Sandbox Code Playgroud)
我收到一个奇怪的错误,即持续日期比当前时间少 8 小时。尝试了以下几种方法:
使用@Temporal(TemporalType.TIMESTAMP)该字段
设置默认时区
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
设置前打印日期,显示正确值。
也在 mysql 层设置时区:
SET GLOBAL time_zone = '+8:00';
SET SESSION time_zone = '+8:00';
将字段类型更改为 java.sql.Timestamp
上述方法都没有帮助。有人遇到过类似的问题吗?有什么线索吗?
找到问题了,问题出在jdbc连接URL上。
spring.datasource.url=jdbc:mysql://:3307/dbname? useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
由于 URL 中的服务器时区设置,GMT+8 时间转换为 UTC,从而导致 8 小时的时差。删除 URL 中的 serverTimezone 参数后,日期工作正常。感谢尼尔和沙辛的时间和支持。
| 归档时间: |
|
| 查看次数: |
3544 次 |
| 最近记录: |