У меня есть приложение JavaEE, основное работает на докере с PostgreSQL, тесты работают с 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 (дата) не существует
Любая идея, как унифицировать это?
Я думаю, установить один и тот же тип базы данных в файле persistance.xml resources.xml для тестов и приложения? Но мне интересно, есть ли какая-нибудь функция SQL, которую я мог бы использовать для обоих без повторного редактирования файлов xml?
{fn DAYOFWEEK(date)}
. Теоретически все драйверы JDBC должны выполнять распаковку для правильной конкретной функции базы данных, но они не всегда делают это. - person Mark Rotteveel   schedule 09.02.2017