To_chars в JPA

#sql #oracle #jpa

#sql #Oracle #jpa

Вопрос:

У меня есть собственный запрос, добавленный в JPA, и я хочу отформатировать дату как гггг-ММ-дд

         select to_char(date,'yyyy-MM-dd') from table1 where date > sysdate;
  

Эти данные о дате хранятся либо как varchar, либо как timestamp в разных таблицах. Поэтому я преобразовал в to_char с этим форматом, чтобы сделать его универсальным. При запуске в Oracle DB он работал, но при выполнении в JPA он выдает недопустимое число.

Я попытался использовать Operator вместо этого, он бросил Operator is invalid .

Спасибо

Комментарии:

1. Функция названа to_char (нет s в конце) — но гораздо лучше выполнять форматирование на уровне представления (= пользовательский интерфейс), а не во время извлечения данных

2. Вы не должны выполнять какое-либо преобразование типов, вы должны выполнять форматирование значений

3. «Эти данные даты хранятся либо как varchar, либо как timestamp» — строковое значение вызовет эту ошибку, поскольку Oracle предположит, что вы вызываете числовую версию to_char() . Вам нужно будет сначала преобразовать его в дату / временную метку, а затем отформатировать это с помощью to_char() — или предпочтительно в пользовательском интерфейсе, а не в запросе, как уже было сказано. На самом деле у вас не может быть одного универсального запроса для обработки обоих типов исходных данных (по крайней мере, не усложняя его). Конечно, вы все равно не должны хранить даты или временные метки в виде строк…