gpt4 book ai didi

java - CriteriaBuilder 即时到 postgres TIMESTAMP 转换

转载 作者:行者123 更新时间:2023-12-04 10:38:54 25 4
gpt4 key购买 nike

我有一个 Postrges DB 表,它有一列 created_at TIMESTAMP WITHOUT TIMEZONE .
在该表中,有一条时间戳为 2020-02-15 00:00:00 的记录。 .
在 hibernate 实体中,该字段映射如下:

@Column(name = "created_at", updatable = false)
@CreationTimestamp
private Instant createdAt;

我正在尝试使用 CriteriaAPI 查询记录.我以这种方式形成查询:
criteriaBuilder.greaterThanOrEqualTo(rootEntity.get("created_at"), Instant.ofEpochSecond(1581724800L).truncatedTo(ChronoUnit.DAYS))

号码 1581724800L对应于 2020-02-15 00:00:00 ,所以它应该工作。但是,此查询不会返回我要查找的记录。
查看数据库日志,我发现它实际上查询了时间戳 2020-02-15 03:00:00 .所以,即使我使用的是 Instant并且数据库字段是 TIMESTAMP WITHOUT TIMEZONE在查询中,它将时间戳转换为分区时间戳。

可能是什么问题,我在这里做错了什么?

最佳答案

看起来 hibernate 以某种方式改变了时间并转移到不同的时区。也许尝试将其设置为 UTC spring.jpa.properties.hibernate.jdbc.time_zone = UTC或者尝试设置不同的时区,看看查询中的时间是否也发生了变化

关于java - CriteriaBuilder 即时到 postgres TIMESTAMP 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com