【发布时间】:2017-05-16 07:30:06
【问题描述】:
我保存了createdAt : new Date()的文件
这些被保存为例如“createdAt”:ISODate(“2017-01-02T06:46:15.619Z”),
现在,当我使用下面的查询获取单个日期的结果时,它不会找到。
User.find({
"userStatus":"active",
"entityType": {$ne: ""},
"createdAt": {
$gte: new Date(2017, 0, 2),//from date
$lt: new Date(2017, 0, 2)//to date
}},function(err,data){
if(err){ ...
在我的用户模型中是这样的:
createdAt:Date
我可以找到更广泛的日期,但不能找到一个日期。
我也试过$lte 而不是$lt。 SO上的所有解决方案都说同样的话。我哪里错了?
【问题讨论】:
-
对 UTC 时间使用具有相同参数的 new Date(Date.UTC(...))。您拥有的变体具有本地时区的日期。
-
好的。保存时还是获取时?如果在保存时,那么我应该如何在那里指定UTC? new Date(Date.UTC()) 会单独工作并保存在 UTC 时间戳中吗?
-
将我的搜索查询修改为
"createdAt": { $gte: new Date(Date.UTC(2017, 0, 2)),//from date $lt: new Date(Date.UTC(2017, 0, 2))//to date }但没有帮助 -
$gte和$lt中的日期条件相同。这相当于ISODate("2017-01-02T00:00:00.000Z")。您尝试获取的记录有ISODate("2017-01-02T06:46:15.619Z")。试着调整你的日期。如果您需要单日期比较,则必须将时间部分添加到查询中 -
是的,但实际上我只能知道获取日期而不是时间。如果我的日期过滤器只有一个日期或相同的 from_date 和 to_date,解决方法是什么?