Sails.js水线查询修改器与sails-mysql一起使用的日期是什么?

10

我刚开始使用Sails.js和它的ORM——Waterline, 真的很喜欢,但是我不确定如何使用查询修饰符来处理日期。我��在使用sails-mysql。具体而言,我正在尝试获取在两个特定日期之间具有datetime字段的行。我已经尝试了这样做:

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

startDateendDate是两个Date对象。我还尝试使用toString()将它们转换为字符串。但在这两种情况下,我得到的是数据库中所有的行,而不是两个日期之间的行。是否有办法解决这个问题,或者这个功能还没有成为Waterline或sails-mysql的一部分?

2个回答

9

使用sails-mongo时也面临同样的问题。

只要确保日期格式正确(如Jeremie所提到的),我个人会将日期存储在UTC中moment(startDate).toISOString() ,在客户端上,您可以通过 moment(startDate) 来处理本地日期和时间

查看延迟查询的Waterline源代码(请参阅where方法),它会将最近发现的datetime_field标准应用于有效的内容。

经过代码、搜索和小组讨论的搜寻,我没有找到任何有用信息。但我希望我错过了一些显而易见的东西。现在,我的建议是以startDate为锚点并加上一个限制来获取结果,例如:

.where({ datetime_field: { '>=': startDate } })
.limit(100)

7
你需要将日期格式化为字符串,格式为YYYY-MM-DD。 如果你需要帮助格式化日期,moment.js有许多很酷的功能可以使用。
格式化日期看起来是这样子的:
var formatedStartDate = moment(startDate).format('YYYY-MM-DD');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接