SQL-запрос для поиска строки, совпадающей с датой в Toplink - PullRequest
1 голос
/ 20 января 2011

Действительно ненавижу даты в Oracle, но все, что я хочу сделать, - это просто выполнить базовый запрос, чтобы определить, совпадают ли строки или строки с датой (формат даты 17-JAN-11 в таблице Oracle),Я использую Toplink, чтобы попытаться сформировать запрос.

Мой код такой:

ReadAllQuery query = new ReadAllQuery(FooMyTable.class);
ExpressionBuilder builder = query.getExpressionBuilder();

if (dateFoo != null)
    query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").equal(dateFoo));

....

Он всегда возвращает ноль строк, и яугадайте, потому что я должен использовать truncateDate () или что-то еще, но я не могу понять синтаксис.Может ли кто-нибудь помочь ??, не смог найти ничего приличного через Google, отсюда и эта публикация.

ОБНОВЛЕНИЕ: Теперь я знаю, что это определенно связано со временем и датами - для строк без времени, просто для самой датыкод, приведенный выше, работает, но если значение даты также имеет время с ним, произойдет сбой.

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Что генерирует SQL? Похоже, что truncateDate ("DD") должно работать.

1 голос
/ 21 января 2011

Фактический код:

query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").truncateDate("DD").equal(dateFoo));

Сообщение об ошибке:

ORA-01898: too many precision specifiers Error Code: 1898 

Произошло из-за неправильной маски формата - так как я требовал, чтобы дата была округлена до ближайшего дня.

...