Проблема
В Oracle TRUNC перегружен и поддерживает обе функции:- числовые значения
- значения даты (например, усечение до дня, месяца и т. д.)
Код: Выделить всё
TRUNC(SYSDATE)
TRUNC(SYSDATE, 'MM')
TRUNC(123.456, 2)
- применяется только к числовым значениям.
Код: Выделить всё
TRUNC() - Для дат эквивалентом является DATE_TRUNC()
Код: Выделить всё
DATE_TRUNC('day', now())
TRUNC(123.456, 2)
Текущий обходной путь
Чтобы справиться с этой разницей, я реализовал собственное преобразование с помощью parserListener в jOOQ:- Определить использование TRUNC(date)
- Переписать его в oracle.trunc(...) через Расширение orafce
Код: Выделить всё
TRUNC(date_column)
Код: Выделить всё
oracle.trunc(date_column)