Java 日至秒的Jooq平均值
我正在尝试使用Jooq在嵌套请求中执行平均时间戳字段。我几乎完成了,只是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
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
的声明?@MondKindaytossecond
是一个Jooq类。我的坏消息为双“avg”
,我是坏异常消息。。。我编辑它!异常显示您的查询中有两个名为“avg”的字段,尽管在您的代码中我们看到只有一个字段。你能发布你在当前版本的代码中得到的异常情况吗?我指的是这段文字:选择avg(“alias89583003”“SPEED”)作为“avg”,选择sum(“alias89583003”“SPEED”)/count(“alias89583003”“SPEED”)作为“avg”
。另外,能否显示类daytossecond
的声明?@MondKindaytossecond
是一个Jooq类。我的坏消息为双“avg”
,我是坏异常消息。。。我编辑它!
Field<Integer> SPEED = field("SPEED", Integer.class);