【问题标题】:Group by date using a datetime field with JOOQ使用带有 JOOQ 的日期时间字段按日期分组
【发布时间】:2021-07-23 18:45:21
【问题描述】:

我有一个名为delivery 的表和日期时间字段delivery_time

+--------------------+------------------------------------------+------+-----+-------------------+
| Field              | Type                                     | Null | Key | Default           |
+--------------------+------------------------------------------+------+-----+-------------------+
| delivery_time      | datetime                                 | YES  |     | NULL              |

我想计算每个日期的交付情况。使用普通的 sql 我可以做到这一点

select  CAST(delivery_time as DATE) as date, count(*) as count from delivery group by CAST(delivery_time as DATE);

+------------+-------+
| date       | count |
+------------+-------+
| 2021-04-21 |     1 |
| 2021-03-22 |    11 |
| NULL       |     3 |
| 2021-03-21 |     1 |
| 2021-04-22 |     2 |
| 2021-04-30 |     1 |
+------------+-------+

但是当我尝试使用 JOOQ 执行此操作时,它无法正常工作(仅返回空行)

jooq.dsl()
.select(
        date(Tables.DELIVERY.DELIVERY_TIME.toString()),
        count()
)
.from(Tables.DELIVERY)
.groupBy(date(Tables.DELIVERY.DELIVERY_TIME.toString()))
.fetch()

谁能帮我用jooq写这个查询

【问题讨论】:

  • 查看this 时,我认为问题可能出在date(Tables.DELIVERY.DELIVERY_TIME.toString()),您是否尝试过CAST(Tables.DELIVERY.DELIVERY_TIME AS DATE)? (见:docs
  • 根据文档 date() 功能与 CAST 和 DATE 的功能相同。如果我错了,请纠正我
  • 但我怀疑date(DELIVERY_TIME.toString()) 是否等于CAST(DELIVERY_TIME AS DATE),这就是我评论的原因。 (我对jooq不熟悉)

标签: mysql jooq


【解决方案1】:

您正在使用Object.toString() 方法,该方法可用于所有Java 对象以进行调试。在 jOOQ 中,您将获得列表达式的字符串表示形式。在你的情况下这样做没有意义。只需使用 DSL.cast() 方法,就像使用 SQL 一样。

假设通常的静态导入:

import static org.jooq.impl.DSL.*;
import static org.jooq.impl.SQLDataType.*;
import static com.example.Tables.*;

jooq.dsl()
    .select(cast(DELIVERY.DELIVERY_TIME, DATE), count())
    .from(DELIVERY)
    .groupBy(cast(DELIVERY.DELIVERY_TIME, DATE))
    .fetch();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2021-01-23
    • 2014-05-01
    • 2012-02-29
    • 1970-01-01
    相关资源
    最近更新 更多