1

我有 JavaEE 应用程序,主要的是使用 PostgreSQL 在 docker 上工作,测试使用 HSQLDB,

在查询中,我想检查星期几(从收集的数据中排除周末)

在 Postgres 中,以下工作:

extract(dow from date) != 0 AND extract(dow from date) != 6

当使用 HSQLDB 时,这会导致:

内部异常:java.sql.SQLSyntaxErrorException:意外令牌:DOW

对于 HSQLDB,我需要使用:

DAYOFWEEK(date) != 1 AND DAYOFWEEK(date) != 7

但这当然不适用于 PostgreSQL:

引起:org.postgresql.util.PSQLException:错误:函数 dayofweek(date) 不存在

知道如何统一这个吗?

我想,在persistance.xml resources.xml 中为测试和应用程序设置相同的数据库类型?但我想知道是否有任何 SQL 函数可以用于两者,而无需重新编辑 xml 文件?

4

2 回答 2

0

我刚刚验证了 Mark 关于使用JDBC 转义的建议,以下内容适用于 HSQLDB 和 Postgres:

{fn DAYOFWEEK(date)} <> 0 AND {fn DAYOFWEEK(date)} <> 6
于 2017-02-13T16:04:57.173 回答
0

解决了:

我使用 JPQL NamedQuery(我使用的是 NativeQuery)和 LocalDates 列表的传递参数(周末+节假日),

在查询中,在 WHERE 部分中我输入了:

'myDay not in :listOfWeekendsAndHolidays'
于 2017-02-15T08:53:31.497 回答