为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB Spring 的日上限和下限

MongoDB Spring 的日上限和下限

浮云间 2022-06-15 15:27:57
我有一个数据库,我也在为用户在数据库上执行的每次更新保存日志。我想检查用户是否在 24 小时内更新数据,然后更新日志,否则如果数据更新超过一天,则插入新日志而不是更新当天的日志。为此,我需要为插入数据的时间设置上限和下限。我写了一个函数来检查数据是否在 24 小时后更新,但我不知道一天的上限和下限是什么。// returns 24 hours records, by Id and Crop...    private FarmerCropDataLog findLogByIdAndCrop(Farmer farmer, Crop cropData) {        String farmerId = farmer.getId();        // TODO Auto-generated method stub        Query query = new Query();        query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.FARMER_ID).is(farmerId));        query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CROP).is(Crop.valueOf(Crop.class, cropData.name())));        query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CREATION_TIME).lt(UPPER_BOUND));        query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CREATION_TIME).gte(LOWERBOUND));        List<FarmerCropDataLog> logData = farmerCropDataLogDao.runQuery(query, FarmerCropDataLog.class);        if (logData != null) {            return logData.get(0);        } else {            return null;        }    }编辑->Upper Bound 应该是 24*60*60*1000 并且 lowerBound 应该是 0?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

根据评论中的信息,我认为您可以按如下方式确定边界值:


long millisPerDay = 24 * 60 * 60 * 1000;

long upperBound = System.currentTimeMillis();

long lowerBound = upperBound - millisPerDay;

注意:您应该检查您的时间戳字段是否使用 Unix 时间戳(以秒为单位)或自 1970 年 1 月 1 日以来的毫秒:在第一种情况下,您的值应除以 1000。


我希望这可以帮助您正确设置查询...


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信