我有一个ISODate格式的带有'DateAdded‘的Mongo集合
{
"_id" : 4098199,
"DateAdded" : ISODate("2018-08-31T05:06:13.150Z")
}所以现在是1小时,然后是本地日期时间
LocalDatetime is 2018-08-31 06:06:13 +01:00
UTC is 2018-08-31T05:06:13.150Z当我尝试获取在2018-08-31 06:00:00之后添加的记录时,使用以下查询我无法获得UTC格式的记录
db.getCollection('User').find({"DateAdded":{$gte: new ISODate('2018-08-31T6:00:00Z')}})如何在MongoDB中搜索日期字段时转换协调世界时的日期?
发布于 2018-08-31 16:26:55
首先,ISODate('2018-08-31T6:00:00Z')有一个拼写错误-它应该是06:00:00Z。如果不使用前导0,ISODate助手将返回'2018-08-31T00:00:00Z' 0am UTC,而查询实际上将返回文档。
其次,没有任何关于当地时间的内容。ISODate是协调世界时,所以ISODate("2018-08-31T05:06:13.150Z")是世界协调时5am,ISODate("2018-08-31T06:06:13.150Z")是世界协调时6am。5 < 6,所以$gte条件不满足,并且不返回文档。
最后,如果您想使用本地时间-请改用Date:
db.getCollection('User').find({"DateAdded":{$gte: new Date('2018-08-31T6:00:00')}})将返回在UTC时间早上5点,当地时间早上6点之后创建的所有文档。请注意,末尾没有指定协调世界时时区的Z。
作为一个建议--不要搞乱当地时间。尽快将其转换为UTC,并始终使用UTC。
https://stackoverflow.com/questions/52110996
复制相似问题