Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JPQL, вычитание дат / 3 сообщений из 3, страница 1 из 1
19.01.2012, 13:52:03
    #37622120
amigaboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPQL, вычитание дат
Хочется мне написать что-то в таком виде:
Код: java
1.
SELECT DISTINCT m.pk.id FROM Man m WHERE ?1 - m.rdat.time < 18 * 60 * 60 * 24 * 365


Т.е. есть поле с типом Date (rdat), мне надо из текущего времени (которое подставляется через ?1) вычесть rdat и сравнить с 18ю годами.

Кто-нибудь оперировал датами в jpql?
...
Рейтинг: 0 / 0
19.01.2012, 14:19:12
    #37622207
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPQL, вычитание дат
По-большому счету никак, именно в HQL запросе.
Но, ведь можно сгенерировать дату через Java, например используя JodaTime и т.п.
По сути ваш запрос будет
Код: sql
1.
SELECT DISTINCT m.pk.id FROM Man m WHERE  m.rdat.time between :computedDate and :currentDate



где computedDate - текущая дата минус 18 лет, ну а :currentDate - понятно что такое.

также насколько я помню, вроде в запросах можно использовать предефайнед CURRENT_DATE, хотя возможно это не во всех базах работает, нужно погуглить.

Есть еще вариант написать собственный диалект, но это геморройно немного, в общем вот хорошее обсуждение

http://stackoverflow.com/questions/639522/performing-date-time-math-in-hql
...
Рейтинг: 0 / 0
19.01.2012, 15:08:57
    #37622376
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPQL, вычитание дат
забыл никно это геморройно немного
да не особо. плюс в большинстве программ чуток сложней helloworld это все равно придется делать, по куче разных причин.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JPQL, вычитание дат / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]