Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日至秒的Jooq平均值_Java_Jooq - Fatal编程技术网

Java 日至秒的Jooq平均值

Java 日至秒的Jooq平均值,java,jooq,Java,Jooq,我正在尝试使用Jooq在嵌套请求中执行平均时间戳字段。我几乎完成了,只是Jooq无法将DayToSecond类型转换为bigdecimic,因为它的转换基于DayToSecond字符串表示,而DayToSecond的表示形式如下所示: 00:00:55.646 因此转换无法完成并引发异常 我使用了JOOQ3.11.2 这是表格: CREATE TABLE IF NOT EXISTS MISSION ( ID SERIAL PRIMARY KEY, START_DATE T

我正在尝试使用Jooq在嵌套请求中执行平均时间戳字段。我几乎完成了,只是Jooq无法将
DayToSecond
类型转换为
bigdecimic
,因为它的转换基于
DayToSecond
字符串表示,而
DayToSecond
的表示形式如下所示:

00:00:55.646

因此转换无法完成并引发异常

我使用了JOOQ3.11.2

这是表格:

CREATE TABLE IF NOT EXISTS MISSION (
  ID         SERIAL PRIMARY KEY,
  START_DATE TIMESTAMP,
  SOLVE_DATE TIMESTAMP);
这就是JOOQ请求:

Field<DayToSecond> SPEED = field("SPEED", DayToSecond.class);
Table<Record1<DayToSecond>> nested =
        context.select(
                timestampDiff(Tables.MISSION.SOLVE_DATE,
                              Tables.MISSION.START_DATE)
                                .as(SPEED))
                        .from(Tables.MISSION_USER)
                        .asTable();
context.select(
        avg(nested.field(SPEED)).as("avg"), // Error with this line
        max(nested.field(SPEED)).as("max"),
        min(nested.field(SPEED)).as("min"))
    .from(nested)
    .fetchOne().into(Efficiency.class);

那么,有没有一种解决方案可以在
天到秒
上执行平均值呢?

您可以通过从间隔差中提取秒数,并在Java中将其作为一个普通数字来获得,从而完全避免
天到秒

使用此功能(部分取自):

为此:

diff(Tables.MISSION.SOLVE_DATE, Tables.MISSION.START_DATE)
然后将
速度
声明为:

Field<Integer> SPEED = field("SPEED", Integer.class);
字段速度=字段(“速度”,整数.class);

通过从间隔差中提取秒数,并在Java中将其作为一个普通数字,您可以完全避免
DayToSecond

使用此功能(部分取自):

为此:

diff(Tables.MISSION.SOLVE_DATE, Tables.MISSION.START_DATE)
然后将
速度
声明为:

Field<Integer> SPEED = field("SPEED", Integer.class);
字段速度=字段(“速度”,整数.class);

异常显示您的查询中有两个名为
“avg”
的字段,尽管在您的代码中我们看到只有一个字段。你能发布你在当前版本的代码中得到的异常情况吗?我指的是这段文字:
选择avg(“alias89583003”“SPEED”)作为“avg”,选择sum(“alias89583003”“SPEED”)/count(“alias89583003”“SPEED”)作为“avg”
。另外,能否显示类
daytossecond
的声明?@MondKin
daytossecond
是一个Jooq类。我的坏消息为双
“avg”
,我是坏异常消息。。。我编辑它!异常显示您的查询中有两个名为“avg”的字段,尽管在您的代码中我们看到只有一个字段。你能发布你在当前版本的代码中得到的异常情况吗?我指的是这段文字:
选择avg(“alias89583003”“SPEED”)作为“avg”,选择sum(“alias89583003”“SPEED”)/count(“alias89583003”“SPEED”)作为“avg”
。另外,能否显示类
daytossecond
的声明?@MondKin
daytossecond
是一个Jooq类。我的坏消息为双
“avg”
,我是坏异常消息。。。我编辑它!
Field<Integer> SPEED = field("SPEED", Integer.class);