我有一个数据库,我还保存用户在数据库上执行的每个更新的日志。我想检查用户是否在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;
}
}
编辑->
上界应为24 * 60 * 60 * 1000,下界应为0?
答案 0 :(得分:1)
根据评论中的信息,我认为您可以按如下方式评估边界值:
long millisPerDay = 24 * 60 * 60 * 1000;
long upperBound = System.currentTimeMillis();
long lowerBound = upperBound - millisPerDay;
注意:自1970年1月1日起,您应该检查时间戳字段是否使用Unix时间戳(以秒为单位)或毫秒数:在第一种情况下,您的值应除以1000。
我希望这可以帮助您正确设置查询...