9

我刚开始使用带有 ORM、Waterline 的 Sails.js,并且非常喜欢它,但我不确定如何使用查询修饰符来处理日期。我正在使用sails-mysql。具体来说,我正在尝试获取在两个特定日期之间具有日期时间字段的行。我试过这样做:

MyModel.find()
    .where({ datetime_field: { '>=': startDate } })
    .where({ datetime_field: { '<=': endDate } })
    .done(function(err, objects){
        // ...
    });

startDate并且endDate是两个Date对象。我也尝试过将它们转换为带有toString(). 在这两种情况下,我都从数据库中获取每一行,而不是两个日期之间的行。有没有办法做到这一点,或者这个功能还不是 Waterline 或sails-mysql 的一部分?

4

2 回答 2

10

在同一条船上(没有双关语),但使用sails-mongo。

只要您有正确的日期格式(如 Jeremie 所述)。我个人在客户端上以 UTC 存储日期,moment(startDate).toISOString()您可以moment(startDate)本地日期和时间工作。

查看延迟查询的Waterline 源(请参阅方法),它应用它发现有效where的最新标准。datetime_field

在浏览了代码、搜索和群组后,我没有找到任何有用的东西。我当然希望我错过了一些明显的东西,但现在我目前的建议是将结果锚定在你的结果上startDate,然后限制它,

例如

.where({ datetime_field: { '>=': startDate } })
.limit(100)
于 2013-11-14T02:05:44.380 回答
7

您需要将日期格式化为 YYYY-MM-DD 格式的字符串。如果你需要帮助格式化你的日期,moment.js有很多很酷的功能。

格式化你的日期看起来像

var formatedStartDate = moment(startDate).format('YYYY-MM-DD');
于 2013-11-13T17:38:41.253 回答