我想问你有关 MariaDB 时区的问题。
- application
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
@PostMapping
public void insertTime() {
LocalDateTime now = LocalDateTime.now();
log.info(now.toString());
TImeTest timeTest = TImeTest.builder()
.createdAt(now)
.modifiedAt(now)
.build();
timeTestRepository.save(timeTest);
}
url: jdbc:mariadb://localhost:3307/test?serverTimezone=UTC
- DB
[
{
"@@global.time_zone": "UTC",
"@@session.time_zone": "UTC",
"@@system_time_zone": "UTC"
}
]
我认为你应该将 serverTimeZone 更改为
Asia/Seoul
。
因为 LocalDateTime 不包含区域信息,所以当传入 MySQL 查询时,它只会被转换为未分区的日期时间字符串。
MySQL 将使用 serverTimeZone 和 db 时区之间的差异作为传入日期时间的增量值。 因此,如果您将 serverTimeZone 设置为
Asis/Seoul
将导致您的时间节省 -9 小时。
或者仅使用 ZonedDateTime 是另一种选择。