【问题标题】:Difference between two dates in JOOQJOOQ中两个日期之间的差异
【发布时间】:2021-10-06 04:19:21
【问题描述】:

我在 Oracle 中有一个表,其中包含 DATUM 类型的 Date 列。 运行“jooq-codegen:generate”后,创建了一个 Java 类,其中字段 DATUM 的类型为 LocalDate

现在我想在 JOOQ 中区分 01.01.2022DATUM。 在 Oracle 中,它只是

TO_DATE('01.01.2022') - DATUM

但是我无法将其翻译成 JOOQ。

minus 不接受数据类型。 dateDiff 函数也不起作用,因为 Java 中的 DATUM 变成了 LocalDate 并且它必须是 Date。如何转换 JOOQ 语句中的类型?还是有其他解决方案?

【问题讨论】:

  • 这能回答你的问题吗? Calculate days between two Dates in Java 8
  • @astentx 这不是这个问题的重复。 jOOQ 是一个生成 SQL 查询的库,您链接的问题是关于在 Java 本身上有所不同。

标签: java oracle jooq


【解决方案1】:

您正在寻找的所有功能都在 DSL 类中

DSL.localDateDiff(DSL.localDate("01.01.2022"), TABLE.DATUM);

请查看 API 文档: https://www.jooq.org/javadoc/latest/org.jooq/org/jooq/impl/DSL.html

【讨论】:

  • 正如我所提到的,TABLE.DATUM 是 LocalDate 类型,而 DSL.dateDiff 需要一个 Date 类型的对象。
  • 我已经更新了我的答案。还请检查 DSL 类,它有很多帮助函数。
  • 谢谢,localDateDiff 是正确的做法。在我的情况下 localDate("01.01.2022") 但是返回 null。我不得不以不同的方式解决这个问题。但是,如何使用该功能仍然会很有趣,也许可以指定格式或类似的东西以避免空值?
  • @Volokh:使用 ISO 8601 格式:localDate("2022-01-01")
猜你喜欢
  • 2011-10-29
  • 2018-11-08
  • 1970-01-01
  • 2020-10-19
  • 2013-10-02
  • 2012-01-15
  • 2016-12-30
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多