gpt4 book ai didi

sql - 使用 JOOQ 在 PostgreSQL 中以秒为单位查找时间戳之间的差异并求和

转载 作者:行者123 更新时间:2023-11-29 12:07:53 27 4
gpt4 key购买 nike

这是我的另一个问题 ( Find difference between timestamps in seconds in PostgreSQL using JOOQ ) 的后续问题。

我想以秒为单位总结 TIMETRACKS.ENDTIMETIMETRACKS.STARTTIME 的差异。数据库中可能没有任何 TIMETRACKS。在这种情况下,数据库应该返回 0

这就是 TIMETRACKS 表的样子:

CREATE TABLE "TimeTracks" (
"id" uuid PRIMARY KEY,
"startTime" timestamp NOT NULL,
"endTime" timestamp,
);

这是我尝试过的一种解决方案:

coalesce(sum(timestampDiff(TIMETRACKS.ENDTIME, TIMETRACKS.STARTTIME)), 0)

但是 coalesce 不适用于间隔类型:org.postgresql.util.PSQLException:错误:COALESCE 类型区间和整数无法匹配

Another solution我在 StackOverflow 上发现的实际上对我有用,但似乎有点“复杂”,因为我必须编写一些原始 SQL:

coalesce(sum(extractEpochFrom(timestampDiff(TIMETRACKS.ENDTIME, TIMETRACKS.STARTTIME))), 0)

fun extractEpochFrom(field: Field<DayToSecond>): Field<Integer> =
DSL.field("extract(epoch from {0})", Integer::class.java, field)

是否有不需要我编写原始 SQL 的可行解决方案?

最佳答案

目前唯一可行的解​​决方案是求助于普通 SQL,如发现的那样 here .

coalesce(sum(extractEpochFrom(timestampDiff(TIMETRACKS.ENDTIME, TIMETRACKS.STARTTIME))), 0)

fun extractEpochFrom(field: Field<DayToSecond>): Field<Integer> =
DSL.field("extract(epoch from {0})", Integer::class.java, field)

关于sql - 使用 JOOQ 在 PostgreSQL 中以秒为单位查找时间戳之间的差异并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51961787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com