Использование day()
и month()
функций
Ваше собственное решение , конечно, абсолютно правильно, но учтите, что существуют удобные методы 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();
Ваш актуальный вопрос
Однако ваш фактический вопрос был другим:
Мне нужно выяснить, находятся ли 2 временные метки в один и тот же день / месяц / год.
Возможно, вам следует указать год.В противном случае совпадут две метки времени на одну и ту же дату в разные годы, например, 2017-01-01
и 2018-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.*;