Java MongoTemplate的时间范围查询

本文介绍如何将前端传来的字符串或时间戳转换为MongoDB可识别的ISO日期格式,并使用Java进行时间范围查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端返回一个时间戳格式,需要转化为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;
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值