在我的数据基准日期为2012-04-09 04:02:53
2012-04-09 04:04:51
2012-04-08 04:04:51
等,我需要检索数据,其中有当前日期在那里的日期字段。我的意思是我只需要匹配2012-04-09'
。我如何使用hibernate标准来做到这一点。如何比较休眠中的日期
15
A
回答
28
使用Restrictions.between()以产生where子句的日期栏是 '2012-04-09 00:00:00' 和“2012-04-09之间23:59:59'
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date fromDate = df.parse("2012-04-09 00:00:00");
Date toDate = df.parse("2012-04-09 23:59:59");
criteria.add(Restrictions.between("dateField", fromDate, toDate));
请注意,该标准API中使用的所有属性是Java属性名称,而不是实际的列名。
更新:获取没有fromdate和todate使用JDK仅
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date fromDate = calendar.getTime();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
Date toDate = calendar.getTime();
criteria.add(Restrictions.between("dateField", fromDate, toDate));
1
最简单的方法是获取具有给定的一天的开始和结束日期之间的所有记录:
WHERE date BETWEEN :from AND :to
在Java代码中
和计算from
和to
。
为了计算午夜:
import static org.apache.commons.lang.time.DateUtils.ceiling;
import static org.apache.commons.lang.time.DateUtils.truncate;
Date someDay = new Date();
Date from = truncate(someDay, Calendar.DAY_OF_MONTH);
Date to = new Date(ceiling(someDay, Calendar.DAY_OF_MONTH).getTime() - 1);
0
Restrictions.between("dateColumn", midnight1, midnight2)
0
如何,做到在Hibernate的当前日期已经说过的话。你可以准备在使用Java代码Timestamp
对象,例如,下面的形式给出:
Calendar cFrom = Calendar.getInstance();
cFrom.setTime(new Date()); /* today */
cFrom.set(Calendar.HOUR_OF_DAY, 0);
cFrom.set(Calendar.MINUTE, 0);
cFrom.set(Calendar.SECOND, 0);
cFrom.set(Calendar.MILLISECOND, 0);
Timestamp from = new Timestamp(cFrom.getTime().getTime());
Calendar cTo = Calendar.getInstance();
cTo.setTime(new Date()); /* today */
cTo.set(Calendar.HOUR_OF_DAY, 23);
cTo.set(Calendar.MINUTE, 59);
cTo.set(Calendar.SECOND, 59);
cTo.set(Calendar.MILLISECOND, 999);
Timestamp to = new Timestamp(cTo.getTime().getTime());
final String QUERY = ""
+ "SELECT tr "
+ "FROM Type tr "
+ "WHERE tr.timestamp >= :timestampFrom AND tr.timestamp <= :timestampTo";
Query query = entityManager.createQuery(QUERY);
query.setParameter("timestampFrom", from);
query.setParameter("timestampTo", to);
@SuppressWarnings("unchecked")
List<Type> ts = (List<Type>)query.getResultList();
+0
常规方式 – Akhilesh 2012-12-19 18:39:11
2
0
The following code will work
Calendar fromDate = Calendar.getInstance();
fromDate.setTime(new Date());
fromDate.set(Calendar.HOUR_OF_DAY, 0);
fromDate.set(Calendar.MINUTE, 0);
fromDate.set(Calendar.SECOND, 0);
fromDate.set(Calendar.MILLISECOND, 0);
Calendar toDate = Calendar.getInstance();
toDate.setTime(new Date());
toDate.set(Calendar.HOUR_OF_DAY, 23);
toDate.set(Calendar.MINUTE, 59);
toDate.set(Calendar.SECOND, 59);
toDate.set(Calendar.MILLISECOND, 999);
criteria.add(Restrictions.between("loadDate", fromDate.getTime(),
toDate.getTime()));
2
fromDate.setTime(new Date());
fromDate.set(Calendar.HOUR_OF_DAY, 0);
fromDate.set(Calendar.MINUTE, 0);
fromDate.set(Calendar.SECOND, 0);
fromDate.set(Calendar.MILLISECOND, 0);
此代码是极其危险的......如果这一天是切换到你在下面的异常结束夏令时(例如1980年4月6日)!
java.lang.IllegalArgumentException: HOUR_OF_DAY: 0 -> 1day
HQL: from human pat where year(pat.birthdate) = :start_day and month(pat.birthdate) = :start_month and year(pat.birthdate) = :start_year ");
params.put("start_day", startDate.get(Calendar.DAY_OF_MONTH));
params.put("start_month", startDate.get(Calendar.MONTH) + 1);
params.put("start_year", startDate.get(Calendar.YEAR));
年/月/日函数使用底层数据库函数(提取,...)并仅比较这些值。因此,我不需要将时间设置为0,这导致上述异常。 只是我脑海中的一个例子我是如何解决问题的!也许它有帮助
相关问题
- 1. 休眠标准日期比较
- 2. 在休眠日期与CriteriaQuery中比较5
- 3. 休眠和日期
- 4. PHP如何比较日期和日期?
- 5. 如何比较solr中的日期?
- 6. 如何比较宏中的日期值?
- 7. 如何比较Django中的日期?
- 8. 如何仅比较linq中的日期?
- 9. 如何比较Javascript中的日期?
- 10. 如何比较模板中的日期?
- 11. 如何比较LINQ中的日期?
- 12. 如何比较iphone sdk中的日期?
- 13. 休眠日期文字
- 14. JPL休眠日期数学
- 15. 休眠HQL和日期
- 16. 默认日期值休眠
- 17. 在休眠时比较时间部分的日期时间字段
- 18. 日期比较
- 19. 比较日期
- 20. 比较日期
- 21. 日期比较
- 22. 比较日期
- 23. 比较日期
- 24. 如何使用比较运算符比较Java中的日期?
- 25. 比较的日期
- 26. mysql中的日期比较
- 27. SQLite中的日期比较
- 28. VBA中的日期比较
- 29. jquery中的日期比较
- 30. 比较Lingo中的日期
如何从当日的日期和日期获得 – Romi 2012-04-09 13:44:17
@Romi:请参阅我的更新 – 2012-04-09 14:12:07
@Ken Chan非常感谢您对单个日期的日期比较进行比较。我会在解析方法中给你+1'23:59:59'。 – OO7 2015-02-02 06:22:52