SQL 在 Java EE - HSQLDB 与 Postgres 中查询星期几

SQL query for day of week in Java EE - HSQLDB vs Postgres

我有 JavaEE 应用程序,主要的应用程序正在使用 PostgreSQL 开发 docker, 测试正在使用 HSQLDB,

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

在 Postgres 中以下工作:

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

当使用 HSQLDB 时,结果为:

Internal Exception: java.sql.SQLSyntaxErrorException: unexpected token: DOW

对于 HSQLDB 我需要使用:

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

但这当然不适用于 PostgreSQL:

Caused by: org.postgresql.util.PSQLException: ERROR: function dayofweek(date) does not exist

知道如何统一吗?

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

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

{fn DAYOFWEEK(date)} <> 0 AND {fn DAYOFWEEK(date)} <> 6

已解决:

我使用 JPQL NamedQuery(我使用的是 NativeQuery)并传递了 LocalDates 列表的参数(周末 + 假期),

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

'myDay not in :listOfWeekendsAndHolidays'