【发布时间】:2017-06-27 06:39:14
【问题描述】:
我有 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: ERROR: function dayofweek(date) 不存在
知道如何统一这个吗?
我想,在persistance.xml resources.xml 中为测试和应用程序设置相同的数据库类型?但我想知道是否有任何 SQL 函数可以同时用于两者,而无需重新编辑 xml 文件?
【问题讨论】:
-
另一个很好的例子,说明为什么在不同的 DBMS 上运行测试而不是在生产环境上运行测试不是一个好主意。
-
你能不能试试 JDBC 函数转义
{fn DAYOFWEEK(date)}。从理论上讲,所有 JDBC 驱动程序都应该不转义到正确的数据库特定函数,但它们并不总是这样做。 -
顺便说一句:该函数转义的范围应该是 1..7,其中 1 是星期日。
-
如果您找到了解决方案,请添加答案并接受该答案。不要将解决方案放在问题中。
标签: sql postgresql jdbc hsqldb database-independent