Spring MongoDB - 在两个日期之间查找文档

时间:2017-07-10 14:50:08

标签: java spring mongodb

我对Java有点新,我正在尝试编写一个查询,它将在两个日期之间返回存储在我的mongodb中的文档。我认为我已接近正确,但我很难到达那里。我收到的格式如下:

  • [2017-06-29,2017-07-05]

我比较的日期存储在数据库中,如下所示:

  • YYYY-MM-DD' T' HH:MM:SS-SSSS

到目前为止我有什么......

public List<VehicleStatus> getReportingDateRange(List<String> dates)  {

    DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
    DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss-SSSS");  

    Date startDate = outputFormat.parse(dates.get(0));      
    Date endDate = outputFormat.parse(dates.get(1));

    Query query = new Query();

    Criteria c = new Criteria().andOperator(Criteria.where("updateTime").gte(outputFormat.format(startDate)),  
            Criteria.where("updateTime").lte(outputFormat.format(endDate)));

    query.addCriteria(c);

    return this.mongoOperations.find(query, VehicleStatus.class);

   }

我收到一个解析异常。我真的不知道从哪里开始,任何帮助都非常感谢。如果您需要任何其他信息,请告诉我们。

谢谢!

1 个答案:

答案 0 :(得分:2)

You will need to parse the date into input format followed by formatting the date to output format.

Something like

String startDate = outputFormat.format(inputFormat.parse(dates[0])); 
String endDate = outputFormat.format(inputFormat.parse(dates[0]));

Criteria c = new Criteria().andOperator(Criteria.where("updateTime").gte(star‌​tDate), Criteria.where("updateTime").lte(endDate));

You should try to save the date as date type and use below version.

Date startDate = inputFormat.parse(dates.get(0)); 
Date endDate = inputFormat .parse(dates.get(1));

Criteria c = new Criteria().andOperator(Criteria.where("updateTime").gte(star‌​tDate), Criteria.where("updateTime").lte(endDate));