#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()
— или предпочтительно в пользовательском интерфейсе, а не в запросе, как уже было сказано. На самом деле у вас не может быть одного универсального запроса для обработки обоих типов исходных данных (по крайней мере, не усложняя его). Конечно, вы все равно не должны хранить даты или временные метки в виде строк…