gpt4 book ai didi

java - Jooq 按日/月/年比较时间戳

转载 作者:行者123 更新时间:2023-11-29 12:35:02 24 4
gpt4 key购买 nike

我正在尝试使用 jooq 对时间戳进行比较。我需要查明这 2 个时间戳是否在同一天/月/年。

为了在 jpql 中执行此操作,我使用了 day()/month()/year()/hour( ) 方法。

我尝试使用 Field.compare(Comparator, Field) 方法,但这并没有使用标准的 java 比较器,而是使用了 Jooq 的枚举。

jpql 中的一个例子是

SELECT s from Service s WHERE day(s.serviceDate) = day(s.createdAt) and 
month(s.serviceDate) = month(s.createdAt)

最佳答案

使用day()month() 函数

Your own solution是绝对正确的,当然,但请注意有方便的方法DSL.day()DSL.month()你也可以使用:

ctx.select()
.from(SERVICE)
.where(day(SERVICE.SERVICE_DATE).eq(day(SERVICE.CREATED_AT)))
.and(month(SERVICE.SERVICE_DATE).eq(month(SERVICE.CREATED_AT)))
.fetch();

您的实际问题

但是,您的实际问题是不同的:

I need to find out if the 2 timestamps are on the same day/month/year.

您可能还应该包括年份。否则,不同年份同一日期的两个时间戳将匹配,例如2017-01-012018-01-01。这是使用 DSL.trunc() 的替代方法:

ctx.select()
.from(SERVICE)
.where(trunc(SERVICE.SERVICE_DATE).eq(trunc(SERVICE.CREATED_AT)))
.fetch();

与往常一样,以上内容假设您正在使用以下静态导入

import static org.jooq.impl.DSL.*;

关于java - Jooq 按日/月/年比较时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52708599/

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