如果我期待一個Date對象地說2011-03-05HQL日期查詢問題
,我想用HQL拉在2011-03一切,忽視了日/ 05
像where year(somecolumn) = year(datepassedin) and month(somecolumn) = month(datepassedin)
HQL有可能嗎?
這似乎是pertty容易在SQL做的,而不是在HQL
如果我期待一個Date對象地說2011-03-05HQL日期查詢問題
,我想用HQL拉在2011-03一切,忽視了日/ 05
像where year(somecolumn) = year(datepassedin) and month(somecolumn) = month(datepassedin)
HQL有可能嗎?
這似乎是pertty容易在SQL做的,而不是在HQL
好HQL有年份和月份expressions,你可以給它Date對象就好了。所以,像往常一樣使用Query對象,沒有什麼花哨或複雜的。
我試過這個查詢的兩個不同版本,並且在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庫。