JPA 与 PostgreSQL 14 - 使用 atTime(LocalTime.MAX) 查询 LocalDateTime 溢出到第二天

问题描述 投票:0回答:1

我正在使用 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
精度。

有办法配置吗?

postgresql hibernate jpa spring-data
1个回答
0
投票

你是对的。 Postgres 将时间四舍五入到最接近的微秒。一种解决方案是将时间戳截断为微秒:

LocalDate.atTime(LocalTime.MAX).truncatedTo(ChronoUnit.MICROS);

另一种方法是像这样修改查询:

来自:

<= LocalDate.atTime(LocalTime.MAX)

致:

< LocalDate.plusDays(1).atTime(LocalTime.MIN)
© www.soinside.com 2019 - 2024. All rights reserved.