【发布时间】:2026-01-20 14:30:01
【问题描述】:
我有一个包含两个timestamp 列startTime 和stopTime 的表,我想计算表中这些时间戳的平均差异。我有一个适用于 Postgres 和 HSQLDB(我用于本地单元测试)的解决方案,但不能同时适用于两者,我在试图找出一个通用解决方案时遇到了麻烦。
Postgres:
select EXTRACT(EPOCH FROM(avg(m.stopTime - m.startTime))) from Measures m
HSQL:
select avg(FUNC('UNIX_TIMESTAMP', m.stopTime) - FUNC('UNIX_TIMESTAMP', m.startTime) from Measures m
有没有办法对两个数据库使用相同的查询?我发现的所有功能似乎都只在一个数据库中受支持。
我认为我的主要问题是没有通用函数将时间戳转换为秒以执行计算。 EPOCH 只兼容 Postgres,UNIX_TIMESTAMP 只兼容 HSQL。
【问题讨论】:
-
看起来是 JPQL 的完美案例
-
这是我的问题,我一直无法找到允许我这样做的 JPQL 语法。
-
最好使用 same RDBMS 进行测试和生产。
-
我们想使用内存数据库进行隔离的、较低级别的单元测试,以避免与外部接口建立连接,但我了解您的来源。在这个级别,我们更专注于测试应用程序逻辑。
标签: sql postgresql jpa eclipselink hsqldb