Java MongoTemplate的时间范围查询

前端返回一个时间戳格式,需要转化为iso才能被mongo识取

这边是有两个筛选条件,一个是id,一个是时间范围

lt:小于   lte: 小于等于   gte :大于等于   gt: 大于 

  @Override
    public List<InspectPlaceRecord> getUserRouteAndTime(String id, Long date) {

            Date date1 = new Date(date);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date1);
            calendar.add(Calendar.MONTH, 1);
            Query query = new Query();
            query.addCriteria(Criteria.where("inspectStaffid").is(id)
                    .andOperator(
                       Criteria.where("inspectDate").lt(dateToISODate(calendar.getTime())),
                       Criteria.where("inspectDate").gte(dateToISODate(date1))));
            return mongoTemplate.find(query, InspectPlaceRecord.class);


    }
  public static Date dateToISODate(Date dateStr) {
        Date parse = null;
        try {
            // 解析字符串时间
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
            parse = format.parse(format.format(dateStr));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }

当然也有可能是前端传过一个字符串,我们需要转为date

public static Date strToDateLong(String strDate) {
        Date strtodate = null;
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            strtodate = formatter.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return strtodate;
    }

猜你喜欢

转载自blog.csdn.net/wang0112233/article/details/105426285
今日推荐