java mongo日期搜索

时间:2012-11-22 09:30:05

标签: java mongodb date

我们正在使用Java并查询MongoDB。 想要获取前一天的记录。例如,我们希望获得昨天注册的所有学生。这是我们使用的查询,

Date toDay = new Date();            
Date twoDaysBack  = Util.twoDaysBack(toDay);
query.put("enroldate", new BasicDBObject("$gt", twoDaysBack).append("$lt", toDay));

比如说今天是2012年11月22日。这个查询显示了21日和22日注册的学生名单,即使我们今天已经指定了$ lt。

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

Tha Java Date对象不仅包括当天,还包括精确到秒的时间。因此,当您创建新的Date()时,您将获得当前时间的当前日期。今天任何更早的日期都比它少。当您的数据库包含没有时间的日期时,它将被视为November 22nd 2012 00:00:00。这小于November 22nd 2012 11:05:22

解决方案:将toDay的小时,分​​钟和秒设置为0,以排除今天的任何日期。

顺便说一句:许多Java程序员认为库jodatime远远优于Java的本机日期和时间处理类。这开始于它相当于java.util.Date,具有较少误导性的名称DateTime