Java - 如何防止 LocalDate 某一天后退到 MySQL 日期?
Java - How do I prevent a LocalDate shifting back one day to MySQL Date?
我四处搜索,但没有找到直接的解决方案。
- 数据对象有一个 LocalDate 字段
- 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
转换在这里可能是个问题。
我四处搜索,但没有找到直接的解决方案。
- 数据对象有一个 LocalDate 字段
- 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
转换在这里可能是个问题。