我正在使用 Spring Boot 2.7 和 Spring Data JPA / Hibernate 5.6.14 和 PostgreSQL 14。
我有一个这样的映射:
@Column(name = "column", nullable = false)
private LocalDateTime column;
column
是数据库上的 timestamp
。
我正在查询“列”与“之间:初始和:最终”,其中
:final
是
LocalDate.atTime(LocalTime.MAX);
即:
2023-02-27T23:59:59.999999999
但它返回的日期如下
2023-02-28T00:00:00.000000
我的猜测是它会溢出到第二天,因为 postgresql
timestamp
精度。
有办法配置吗?
你是对的。 Postgres 将时间四舍五入到最接近的微秒。一种解决方案是将时间戳截断为微秒:
LocalDate.atTime(LocalTime.MAX).truncatedTo(ChronoUnit.MICROS);
另一种方法是像这样修改查询:
来自:
<= LocalDate.atTime(LocalTime.MAX)
致:
< LocalDate.plusDays(1).atTime(LocalTime.MIN)