我刚开始使用Sails.js及其ORM,Waterline,并且非常喜欢它,但我不确定如何使用查询修饰符来表示日期。我正在使用sails-mysql。具体来说,我试图获取具有两个特定日期之间的日期时间字段的行。我试过这样做:
MyModel.find()
.where({ datetime_field: { '>=': startDate } })
.where({ datetime_field: { '<=': endDate } })
.done(function(err, objects){
// ...
});
startDate
和endDate
是两个Date
个对象。我也尝试将它们转换为toString()
的字符串。在这两种情况下,我从数据库中获取每一行而不是两个日期之间的行。有没有办法做到这一点,或者这个功能还不是Waterline或sails-mysql的一部分?
答案 0 :(得分:10)
在同一条船上(没有双关语意)但使用sails-mongo。
如果你有正确的日期格式(正如Jeremie提到的那样)。我个人将moment(startDate).toISOString()
的日期存储在您moment(startDate)
可以local date and time工作的客户端上。
查看Waterline source for deferred queries(请参阅where
方法),它会应用它认为有效的最新datetime_field
条件。
在浏览代码,搜索和小组后,我找不到任何有用的东西。我当然希望我错过了一些明显的东西,但是现在我的建议是将结果锚定在startDate
上,然后限制上限,
e.g。
.where({ datetime_field: { '>=': startDate } })
.limit(100)
答案 1 :(得分:7)
您需要将日期格式化为YYYY-MM-DD格式的字符串。 如果您需要帮助格式化日期,moment.js有很多很酷的功能。
格式化您的日期将类似于
var formatedStartDate = moment(startDate).format('YYYY-MM-DD');