【问题标题】:Add group by field of DATE and FROM_UNIXTIME in jooq在 jooq 中按 DATE 和 FROM_UNIXTIME 字段添加分组
【发布时间】:2013-11-20 00:34:55
【问题描述】:

有没有办法按以下字段添加分组:

DATE(FROM_UNIXTIME(myField))

使用 jooq 3.2.0?我一直在查看 API,搜索,但看不到方法。即使是自定义字符串,我也会接受。

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    似乎我能找到的唯一方法是定义一个自定义字段,它是GroupField 的子类并且可以工作:

    query.addGroupBy( DSL.field("DATE(FROM_UNIXTIME(epoch)") );
    

    【讨论】:

    • 这是正确的方法,正如我刚刚在另一个 Stack Overflow 答案中所示:stackoverflow.com/a/19860383/521799。 jOOQ 3.3 中可能会添加对此类 Oracle 特定功能的显式支持:github.com/jOOQ/jOOQ/issues/2832
    • 好的,谢谢。当我们添加对其他数据库的支持时,我必须手动调整它,所以我会找到一种方法在我们的代码中组织它,让它变得显而易见。附带问题 - 有没有办法获取查询的调试值?我根据日志监听器示例编写了一个自定义监听器,但我看不到任何计时方法。我也想看看jooq本身有多快,所以我可能需要一个外部计时器
    • 我不太确定您指的是什么调试值。或许你可以再问一个问题,再解释一下?
    【解决方案2】:

    我的代码中有这个东西:

    
    private Field<Timestamp> fromUnixtime(Field<Long> f) {
        return DSL.function("FROM_UNIXTIME", Timestamp.class, f);
    }
    
    public someMethod() {
        // ... 
    
        query.addGroupBy(fromUnixTime(TABLE.EPOCH));
    
        // ...
    }
    
    1. DSL.function() 是存在的东西(虽然可能不在 2013 年?),我喜欢它。
    2. fromUnixTime() 在我的代码中得到了很多重用,但它也很漂亮。

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      相关资源
      最近更新 更多