我在休眠标准限制方面遇到问题。我在db2表中有数据为2014-03-05 20:07:33我试图根据以下标准获取数据:
hibernateCriteria.add(Restrictions.ge("eventTs",
getLowerBoundDate(adminReportsBeanDTO.getFromDate())));
hibernateCriteria.add(Restrictions.le("eventTs",
getUpperBoundDate(adminReportsBeanDTO.getToDate())));
public static Date getLowerBoundDate(Date fromDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(fromDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
*
* @param fromDate
* @return
*/
public static Date getUpperBoundDate(Date toDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(toDate);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}
从日期开始截至2014年3月5日00:00:00 IST 2014年至今日3月5日23:59:59 IST 2014
我在表格中有上述日期的记录,但没有显示。但该报告显示的是下一个日期6月3日。
这是我的休眠标准
CriteriaImpl(com.gtech.lsp.beans.Audit:this[][eventTs>=Wed Mar 05 00:00:00 IST 2014, eventTs<=Wed Mar 05 23:59:59 IST 2014])
请帮我解决这个问题。
答案 0 :(得分:0)
看起来你正在比较不同时区的日期!您的Java日历在印度时区(IST)中设置。数据库中的日期怎么样? 如果这是您的数据库时区,请尝试将日历时区设置为GMT:
TimeZone tz = TimeZone.getTimeZone("GMT");
cal.setTimeZone(tz);