powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPQL, вычитание дат
3 сообщений из 3, страница 1 из 1
JPQL, вычитание дат
    #37622120
amigaboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется мне написать что-то в таком виде:
Код: 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
JPQL, вычитание дат
    #37622207
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-большому счету никак, именно в 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
JPQL, вычитание дат
    #37622376
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никно это геморройно немного
да не особо. плюс в большинстве программ чуток сложней helloworld это все равно придется делать, по куче разных причин.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPQL, вычитание дат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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