mongo-日期类型(1)

mongo-日期类型(2)

mongo中的日期类型,使用ISO格式,例如:ISODate("2012-11-02T07:58:51.718Z")。下面来测试一下: 

 C:\>mongo 127.0.0.1:2222/test

MongoDB shell version: 1.8.3
connecting to: 127.0.0.1:2222/test
type "help" for help

 

neu:PRIMARY> db.t2.insert({mydate:ISODate("2012-11-02T07:58:51.718Z")})

neu:PRIMARY> db.t2.find()
{ "_id" : ObjectId("50937ded0847cf5f01606dae"), "mydate" : ISODate("2012-11-02T07:58:51.718Z") }

日期字符串也支持多种格式

neu:PRIMARY> db.t2.insert({mydate:ISODate("2012-11-02 07:58:51")})

neu:PRIMARY> db.t2.insert({mydate:ISODate("20121102 07:58:51")})

neu:PRIMARY> db.t2.insert({mydate:ISODate("20121102")}) 

neu:PRIMARY> db.t2.find()
{ "_id" : ObjectId("50937ded0847cf5f01606dae"), "mydate" : ISODate("2012-11-02T07:58:51.718Z") }
{ "_id" : ObjectId("509380d22bb20f9946fb9004"), "mydate" : ISODate("2012-11-02T07:58:51Z") }
{ "_id" : ObjectId("509381052bb20f9946fb9005"), "mydate" : ISODate("2012-11-02T07:58:51Z") }
{ "_id" : ObjectId("509381102bb20f9946fb9006"), "mydate" : ISODate("2012-11-02T00:00:00Z") }

 

我们比较一下mongo中的当前时间与系统当前时间:

 
neu:PRIMARY> new Date()
ISODate("2012-11-02T 08:13:10.250Z")
neu:PRIMARY> ^Z
bye
 
C:\>date
当前日期: 2012-11-02 星期五
输入新日期: (年月日)
 
C:\>time
当前时间: 16:13:14.95
输入新时间:

 

我们看到,mongo中的时间似乎与系统时间相差了8个小时,why?

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

 

在mongodb与oracle或sqlserver相互同步数据时,需要注意这一点!

 

如果用python直接读取mongo中的日期,就会发生错误:

>>> import pymongo
>>> conn=pymongo.Connection('127.0.0.1',2222)
>>> db=conn.test
>>> for row in db.t2.find():
...     print row['mydate']
...
2012-11-02 07:58:51.718000
2012-11-02 07:58:51
2012-11-02 07:58:51
2012-11-02 00:00:00

2012-11-02 00:00:00 

 

在python中,与之对应的日期是 datetime.datetime.utcnow(),而不是now(),两者正好差8个小时:

>>> import datetime 

 >>> datetime.datetime.utcnow()

datetime.datetime(2012, 11, 2,  8, 22, 52, 953000)
>>> datetime.datetime.now()

datetime.datetime(2012, 11, 2, 16, 22, 58, 218000) 

 

关于二者的转换,可以参考这个链接:http://www.linuxso.com/linuxbiancheng/12653.html
 

你可能感兴趣的:(mongo)