Java - 如何防止 LocalDate 某一天后退到 MySQL 日期?

Java - How do I prevent a LocalDate shifting back one day to MySQL Date?

我四处搜索,但没有找到直接的解决方案。

创建日期,例如: LocalDate d = LocalDate.of(2020, 1, 3);

它被写入 SQL 为: stmt.setObject(1, d)); // or setDate with Date.valueOf(d)

在 SQL 中,它存储为 UTC(我猜),因此由于偏移量 (+1),它现在是 2020-01-02 并且也是这样获取的。 (如果DATE列不存储小时数,显然无法恢复到第二天。)

您可以尝试设置 String 而不是 Object,然后让数据库将其转换为 DATE。这基本上看起来像

LocalDate d = LocalDate.of(2020, 1, 3);
stmt.setString(1, d.format(DateTimeFormatter.ISO_LOCAL_DATE));

这应该使日期值保持原样(如果可以的话)。 Object 转换在这里可能是个问题。