Существует обходной путь для этой проблемы.
Первоначально упрощенный SQL, как показано ниже:
SELECT count(*)
FROM table tb
WHERE tb.date between to_date('01-2020','mm-yyyy') and to_date('02-2020','mm-yyyy');
И, непосредственно преобразовав упрощенный SQL в JPQL, получается как таковой:
SELECT count(tb)
FROM table tb
WHERE tb.date BETWEEN FUNC('TO_DATE','01-2020','mm-yyyy') AND FUNC('TO_DATE','02-2020','mm-yyyy')
Но JPQL должен быть динамическим c, так как дата не будет stati c, поэтому с помощью параметра JPQL, чтобы этот JPQL можно было использовать в любой день, инстинктивно я подумал использовать как таковой:
SELECT count(tb)
FROM table tb
WHERE tb.date BETWEEN FUNC('TO_DATE',:fromDate,'mm-yyyy') AND FUNC('TO_DATE',:toDate,'mm-yyyy')
Но, как мой первоначальный вопрос, когда этот поток впервые начался, такой JPQL не будет работать. Итак, как я нашел обходной путь? Относительно просто на самом деле.
Вместо того, чтобы использовать это, чтобы получить дату ранжирования (поскольку sql мудро я использую to_date)
WHERE tb.date BETWEEN FUNC('TO_DATE','','') AND FUNC('TO_DATE','','')
Я использовал это
WHERE FUNC('TO_CHAR','','') between (--fromDate) and (--toDate)
Что в итоге привело к окончательной рабочей JPQL
SELECT count(tb)
FROM table tb
WHERE FUNC('TO_CHAR',tb.date,'mm-yyyy') BETWEEN (:fromDate) AND (:toDate)