最近项目中遇到要求查出当天日期的记录。用hibernate实现。如果是直接写sql多好啊!
说明:
spring2.5+struts2+hibernate3
数据库:mysql5.1
数据库字段是datetime类型,java代码里是Date类型。
思路是:比如今天是2009-08-14 13:42:34,则查时间是大于等于“2009-08-14 00:00:00”小于“2009-08-15 00:00:00”之间的就可以了。也可以用between来判断。
Session session = this.getSession();
Calendar cal = Calendar.getInstance();
Date date = new Date();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date begin = cal.getTime();
cal.add(Calendar.DATE, 1);
Date end = cal.getTime();
String hsql = "select count(*) from Trace u " +
"where u.user.id = :userId AND u.objectId = :objectId " +
"AND u.createtime >= :begin AND u.createtime < :end";
Query query = session.createQuery(hsql);
query.setParameter("userId", userId);
query.setParameter("objectId", objectId);
query.setParameter("begin", begin);
query.setParameter("end", end);
String result = query.uniqueResult().toString();
return Integer.parseInt(result);
谁有更好更有效的办法,请赐教!