Java和Mongo中的Date比较

Java中的Date:“createTime” : “2018-09-13 14:04:05”),
MongoDB中的Date: “createTime” : ISODate(“2018-09-13T14:04:05.268Z”),

MongoDB中的日期格式 是 UTC 通用标准,格式为"yyyy-MM-dd HH![:mm:](https://www.webpagefx.com/tools/emoji-cheat-sheet/graphics/emojis/mm.png)ss.000'Z'"
该时间比中国北京时间晚了8个小时,即·ISODate("2018-09-13T14:04:05.268Z")相当于北京时间2018-09-13 06:04:05.268
因为mongo中的Date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。而系统时间使用的是GMT+0800时间,两者正好相差8个小时。

MongoDB条件表达式

表达式 含义
$gt >
$gte >=
$eq =
$ne !=
$lt <
$lte <=
$in in(后面的值为bson对象数组)
$nin not in(后面的值为bson对象数组)

Maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

实现方式:

String starttime = String.valueOf(params.get("starttime"));
String endtime = String.valueOf(params.get("endtime"));
Query query = new Query();
Criteria criteria = new Criteria();
//设置查询条件
criteria.and("companyId").is(datum.getCompanyId());
criteria.and("createUser").is(datum.getUserId());
criteria.and("type").is(3);
//设置查询时间范围
criteria.and("createTime").gte(DateUtils.dateToISODate(startTime)).lte(DateUtils.dateToISODate(endTime));
query.addCriteria(criteria);
List<CustomerFormDataEntity> customerFormDataEntities = mongoTemplate.find(query, CustomerFormDataEntity.class);

mongo中查询实现方式:

// Requires official MongoShell 3.6+
db = db.getSiblingDB("im_customer");
db.getCollection("customer_form_data").find({ "type" : 3.0, "createUser" : 6264.0, "companyId" : 97.0, "createTime" : { "$gte" : ISODate("2022-05-24T00:00:00.000+0000"), "$lte" : ISODate("2022-05-24T23:59:59.000+0000")}}
);

ISODate转换方法

package net.commchina.im.common.utils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.SimpleTimeZone;/*** <p>* DateUtils** @program: * @description:* @author: Mr.Nanke* @create: 2022-05-25 19:16**/
public class DateUtils {/** * mongo 日期查询isodate * @param dateStr * @return */public static Date dateToISODate(String dateStr){//T代表后面跟着时间,Z代表UTC统一时间Date date = formatD(dateStr);SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));String isoDate = format.format(date);try {return format.parse(isoDate);} catch (ParseException e) {e.printStackTrace();}return null;}/** 时间格式(yyyy-MM-dd HH:mm:ss) */public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";public static Date formatD(String dateStr){return formatD(dateStr,DATE_TIME_PATTERN);}public static Date formatD(String dateStr ,String format)  {SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);Date ret = null ;try {ret = simpleDateFormat.parse(dateStr) ;} catch (ParseException e) {//}return ret;}
}

Java使用MongoTemplate操作MangoDB,实现根据时间等条件组合查询,解决ISODate的问题相关推荐

  1. ElasticSearch实现高亮、范围查询和多条件组合查询(java和kibana)

    ElasticSearch客户端配置参考之前的博客 1.高亮 高亮的本质其实是将搜索结果中需要高亮的字段进行替换 public List<Map<String,Object>> ...

  2. 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息

    综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...

  3. java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现

    elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中,基本都是组合多条件查询. elasticsearch提供bool来实现这种需求: 主要参数: mus ...

  4. java的日期操作_java中对时间的操作详解

    代码演示: //数据库中去的日期 Date s = list.get(0).getSdate(); System.out.println(s);// Tue Apr 28 00:00:00 CST 2 ...

  5. pc(电脑)用java通过adb操作android手机发短信及中文乱码解决

    最近想用java调用android手机的短信功能.已开始用一下方法实现: adb -s emulator-5554 shell am start -a android.intent.action.SE ...

  6. java使用mangodb进行多条件组合查询

    and or组合查询 构造BasicDBObject BasicDBList andList = new BasicDBList();BasicDBObject groupCond = new Bas ...

  7. java easyui条件组合查询_EasyUi+Spring Data 实现按条件分页查询

    Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...

  8. mybatisPlus根据起止时间作为条件进行查询

    背景 查询当天凌晨0.00 到当前时间的数据 代码 SimpleDateFormat wrapperSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm ...

  9. Java 使用 POI 操作 Excel

    Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...

最新文章

  1. UTF-8与UTF-8 BOM
  2. Github标星2w+,热榜第一,如何用Python实现所有算法
  3. webpack ,gulp
  4. Message Decoding密码翻译
  5. springboot和quartz整合实现动态定时任务(持久化单节点)
  6. nodejs实践录:我的nodejs编码风格
  7. vSAN架构解析与6.7功能介绍
  8. 如何在 Mac 上使用“接力”回到上次离开的地方?
  9. 图解设计模式(23种)
  10. PMP试题 | 每日一练,快速提分
  11. 易撰微信编辑器使用指南!
  12. 传媒《财务管理》课程考试作业考核试题
  13. standard-version(发版与 Changelog 自动化)
  14. QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)
  15. 递归函数--猴子摘桃问题的解题思路
  16. uniapp团购商城源码在哪里下载?
  17. js汉字转拼音首字母
  18. 如何修复SSD硬盘,如何给SanDisk SSD开卡
  19. 英语口语学习(03-06)
  20. 特征函数和概率密度函数的关系

热门文章

  1. 非计算机管理员用户 不可以,电脑非管理员账户要怎么办
  2. Java反射--藤原豆腐店自用
  3. Windows必备软件,多而全|2022版
  4. 真无线蓝牙耳机哪款适合新手?数码发烧友最全盘点,高实用性蓝牙耳机
  5. 【Python数据分析与可视化】Pandas统计分析-实训
  6. 行人重识别的挑战 与 最新进展 (35页PPT整理)
  7. 《C语言程序设计》江宝钏主编-习题8-4-复制字串!!!
  8. 不要高估你和任何一个人的关系
  9. PDF拆分技巧——如何在线拆分PDF
  10. 分部积分出现积回去的情况