zoneddatetime到mysql datetime

6tr1vspr  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(805)

我的应用程序使用数据库每个租户多租户,每个租户都有一个时区。
我不想使用timestamp,因为我不希望数据库处理时区转换,但是我想做的是在zoneddatetime和mysql datetime之间进行转换。
在我的应用程序中,我检索租户的当前时间,如下所示:

ZonedDateTime.of(LocalDateTime.now(), tenant.getTenantZoneId());

我想将其写入数据库,因为分区日期时间将显示它(即,应用了时区和dst)。
在从数据库读取数据时,这种转换应该是不必要的,我可以假设所有datetime都是时区。
我怎样才能做最初的翻译?我怎样才能以一种很好的方式作为一个jpa提供者(尤其是hibernate)

6ojccjat

6ojccjat1#

如果我没听错的话,你想写信吗 ZonedDateTime 到mysql的 DATETIME 类型,但不保留区域id等。如果是这样,只需将其编写为 LocalDateTime .
如果你的司机是最新的,只要写 LocalDateTime 到数据库使用 PreparedStatement.setObject 应该工作:

preparedStatement.setObject(index, zonedDateTime.toLocalDateTime());

至于阅读, ResultSet.getObject 应该工作:

LocalDateTime localDateTime = resultSet.getObject(index, LocalDateTime.class);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, tenant.getTenantZoneId());

相关问题