工作日记2017.08.17 MongoDB中的日期查询命令的记录

三. MongoDB中的日期查询命令的记录:大于、小于、等于,Date 和ISODate的区别

1.在mongoDB数据库中,时间的保存是ISODate类型,orm关系映射为java.util.Date类型,其保存的时间与我们会有8小时的区别(保存的时间比我们早了8个小时)。
Java 驱动帮我们做了转换。
com.mongodb.util.JSONSerializers.LegacyDateSerializer代码:

private static class LegacyDateSerializer extends CompoundObjectSerializer {  

       LegacyDateSerializer(ObjectSerializer serializer) {  
           super(serializer);  
       }  

       @Override  
       public void serialize(Object obj, StringBuilder buf) {  
           Date d = (Date) obj;  
           SimpleDateFormat format = new SimpleDateFormat(  
                   "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");  
           format.setCalendar(new GregorianCalendar(  
                   new SimpleTimeZone(0, "GMT")));  
           serializer.serialize(  
                   new BasicDBObject("$date", format.format(d)),  
                   buf);  
       }  

   }  

mongo中的时间与China系统时间相差了8个小时,
这是因为mongo中的date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。而系统时间使用的是GMT+0800时间,两者正好相差8个小时。

2.大于小于等于

{"updateTime" : {"$gte":ISODate("2016-11-28T11:16:33.303Z"),"$lte":ISODate("2016-12-05T01:16:33.303Z")}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值