【发布时间】:2017-07-10 14:50:08
【问题描述】:
我对 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);
}
我收到一个解析异常。我真的不知道从哪里开始,非常感谢任何帮助。如果您需要任何其他信息,请告诉我。
谢谢!
【问题讨论】:
-
解析
Date startDate = inputFormat.parse(dates.get(0)); Date endDate = inputFormat .parse(dates.get(1));并且您的日期应该存储为日期类型。所以不需要解析输出格式和Criteria c = new Criteria().andOperator(Criteria.where("updateTime").gte(startDate), Criteria.where("updateTime").lte(endDate)); -
@Veeram 日期作为字符串存储在数据库中
-
哦,好吧。尝试
String startDate = outputFormat.format(inputFormat.parse(dates[0])); String endDate = outputFormat.format(inputFormat.parse(dates[0]));并将其传递给标准 -
@Veeram - 成功了!非常感谢帮忙。简单的修复,但我显然忽略了一些东西。做一个答案,我会让它正确:)