在 Sails.JS Waterline 中使用完整日期格式查询
Using between query for full date format in Sails.JS Waterline
根据 可以在 Waterline 适配器中对日期进行查询,如下所示:
User.find({
createdAt: { '>': dateFrom, '<': dateTo }
}).exec(/* ... */);
但是,这仅适用于 2018-04-11 等日期格式。
是否有可能在此查询中使用完整的 ISO8601 日期格式:例如2018-04-11T12:45:00.000Z?
编辑:添加了最小的工作示例代码。
readDataInDateRange: function(req, res) {
var dateFrom = req.param("dateFrom");
if (dateFrom == null || dateFrom == ''){
return res.badRequest();
}
var dateTo = req.param("dateTo");
if (dateTo == null || dateTo == ''){
return res.badRequest();
}
User.find({createdAt: { '>=': dateFrom, '<=': dateTo}})
.exec(function afterwards(err, users) {
if (err) {
sails.log(err);
return res.serverError(err);
}
return res.ok(users);
});
}
如果您将 mongodb 与 CLI 一起使用,实际上可能会使用
$gt
显示所有值大于特定值的运算符。这里我们在 sails.js 中有语法显示 Query Language 和详细信息。
磨碎相等运算符
我们可以使用条件显示所有数据的基本示例类似于下面的代码。
Model.find({ age: { '<=': 20 }})
更大的相等运算符
在您的情况下,我们主要按日期时间模式进行过滤。
Model.find({
where: {
date: {
'<=': new Date('2018-08-24T14:56:21.774Z')
}
}
});
时间 '2018-08-24T14:56:21.774Z' 是示例,您可以将所有 ISOformat 时间放在这里。
时间的大于等于运算符
如果数据库中的数据具有 时间戳 格式,您需要将查询更改为数字而不是日期时间格式
Model.find({
where: {
createdAt: {
'<=': new Date('2018-08-24T14:56:21.774Z').getTime()
}
}
});
Date 是全局对象 JavaScript 可以实例化并创建新时间 class。用.getTime()可以生成时间戳。
其他两个时间之间的查询时间
或者如果开发人员想要在两次之间收集数据,我建议使用以下正确的语法。
Model.find({
where: {
updatedAt: {
'>': new Date('2018-08-21T14:56:21.774Z').getTime(),
'<': new Date('2018-08-25T14:56:21.774Z').getTime()
}
}
});
都检查过了,不用担心改错! ;)
根据
User.find({
createdAt: { '>': dateFrom, '<': dateTo }
}).exec(/* ... */);
但是,这仅适用于 2018-04-11 等日期格式。 是否有可能在此查询中使用完整的 ISO8601 日期格式:例如2018-04-11T12:45:00.000Z?
编辑:添加了最小的工作示例代码。
readDataInDateRange: function(req, res) {
var dateFrom = req.param("dateFrom");
if (dateFrom == null || dateFrom == ''){
return res.badRequest();
}
var dateTo = req.param("dateTo");
if (dateTo == null || dateTo == ''){
return res.badRequest();
}
User.find({createdAt: { '>=': dateFrom, '<=': dateTo}})
.exec(function afterwards(err, users) {
if (err) {
sails.log(err);
return res.serverError(err);
}
return res.ok(users);
});
}
如果您将 mongodb 与 CLI 一起使用,实际上可能会使用
$gt
显示所有值大于特定值的运算符。这里我们在 sails.js 中有语法显示 Query Language 和详细信息。
磨碎相等运算符
我们可以使用条件显示所有数据的基本示例类似于下面的代码。
Model.find({ age: { '<=': 20 }})
更大的相等运算符
在您的情况下,我们主要按日期时间模式进行过滤。
Model.find({
where: {
date: {
'<=': new Date('2018-08-24T14:56:21.774Z')
}
}
});
时间 '2018-08-24T14:56:21.774Z' 是示例,您可以将所有 ISOformat 时间放在这里。
时间的大于等于运算符
如果数据库中的数据具有 时间戳 格式,您需要将查询更改为数字而不是日期时间格式
Model.find({
where: {
createdAt: {
'<=': new Date('2018-08-24T14:56:21.774Z').getTime()
}
}
});
Date 是全局对象 JavaScript 可以实例化并创建新时间 class。用.getTime()可以生成时间戳。
其他两个时间之间的查询时间
或者如果开发人员想要在两次之间收集数据,我建议使用以下正确的语法。
Model.find({
where: {
updatedAt: {
'>': new Date('2018-08-21T14:56:21.774Z').getTime(),
'<': new Date('2018-08-25T14:56:21.774Z').getTime()
}
}
});
都检查过了,不用担心改错! ;)