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'
我有 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'