HQL разница временных меток в Oracle - PullRequest
0 голосов
/ 20 марта 2012

Я написал HQL-запрос, который, кажется, прекрасно работает на SQLServer, но выдает исключение на Oracle.Запрос просто вычисляет сумму длительностей всех задач

SELECT SUM(second(t.endTime) - second(t.startTime))  FROM Task as t

Очевидно, вы не можете получить секунды из sysdate в Oracle.Можно ли написать один запрос HQL, который будет работать с обеими базами данных?или я должен обрабатывать оракул отдельно в этом случае?

РЕДАКТИРОВАТЬ : я забыл добавить, что оба типа endTIme и startTime Date типов.И исключение, которое я получаю, это

Caused by: java.sql.SQLException: ORA-30076: invalid extract field for extract source

1 Ответ

1 голос
/ 20 марта 2012

Да, вы можете, синтаксис немного отличается, что означает, что вам придется делать это по-другому.

Это extract(SECOND from ( endtime - starttime) ).

Но вы можете только extract секунд от date.Если вы хотите использовать этот метод в секундах, то ваш столбец будет иметь для типа даты timestamp.

В качестве альтернативы, и более полезным, поскольку он будет работать для вас, я предпочитаю следующее.Oracle возвращает дни из арифметики даты, следовательно, умножение в конце.

( endtime - starttime ) * 60 * 60 * 24
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...