HQL дата запрос - PullRequest
       12

HQL дата запрос

0 голосов
/ 09 сентября 2011

, если я ожидаю, что объект Date скажет для 2011-03-05

, и я хочу использовать HQL, чтобы получить все в 2011-03, игнорируя день / 05

что-то вродеwhere year(somecolumn) = year(datepassedin) and month(somecolumn) = month(datepassedin)

возможно ли это сделать в HQL?

В SQL это кажется довольно простым, но не в HQL

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Ну, в HQL есть год и месяц выражений , и вы можете просто передать им объекты даты. Итак, просто используйте объект Query как обычно, ничего сложного или сложного.

0 голосов
/ 20 февраля 2014

Я пробовал две разные версии этого же запроса, и в SQL Server что-то вроде того, что у вас есть where year(somecolumn), было значительно медленнее (почти на порядок), чем запрос в скобках.

Вы должнысоздайте две даты, одну в начале диапазона и одну в конце.Скажем, что у вас есть строка:

val data = "2011-03-05"

Где-то создайте удобную константу для анализа значения:

val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM")

А затем:

val yearMonthString = data.substring(0, 7)

val fromValue = dateFormat.parse(yearMonthString)
val c: Calendar = Calendar.getInstance(iPutATimeZoneHere)
c.setTime(fromValue)
c.add(Calendar.MONTH, 1)
val toValue = c.getTime

В вашем запросе, у вас будет where somecolumn >= :fromValue and somecolumn < :toValue.

Этот код написан на Scala, но использует стандартные библиотеки Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...