我使用" sequelize":" ^ 2.0.0-rc3"使用pg(postgresql),在这一刻我正在尝试使用日期范围进行原始查询,但是请求不要返回数据。
当我在postgresql db中运行相同的查询时获得正确的结果。请帮助我。
在sequilize中:
// Init main query
var query = "SELECT * FROM" + '"Calls"' +
" WHERE " + '"EquipmentId"' + " = 1" +
" AND " + '"initDate"' + " >= " + "'2015-02-05 14:40' " +
" AND " + '"endDate"' + " <= " + " '2015-02-05 15:00' ";
global.db.sequelize.query(query)
.then(function(calls) {
console.log(calls);
})
.error(function (err) {
console.log(err);
});
在我得到的节点服务器的控制台中。
Executing (default): SELECT * FROM "Calls" WHERE "EquipmentId" = 1 AND "initDate" >= '2015-02-05 14:40' AND "endDate" <= '2015-02-05 15:00'
但是空数组调用......
答案 0 :(得分:3)
试试这个:
var query = ' \
SELECT * FROM "Calls" \
WHERE "EquipmentId" = :EquipmentId \
AND "initDate" >= :initDate \
AND "endDate" <= :endDate; \
';
global.db.sequelize.query(query, null, {raw: true}, {
EquipmentId: 1,
initDate: new Date('2015-02-05 14:40'),
endDate: new Date('2015-02-05 15:00')
})
.then(function(calls) {
console.log(calls);
})
.error(function (err) {
console.log(err);
});
答案 1 :(得分:1)
您也可以使用像findAll
Model.findAll(
where : {
gte:sequelize.fn('date_format', initDate, '%Y-%m-%dT%H:%i:%s'),
lte:sequelize.fn('date_format', endDate, '%Y-%m-%dT%H:%i:%s')
}
)
答案 2 :(得分:0)
要获得两个日期范围之间的结果,只需执行此操作。
let whereClause = {
where: { $and: [
{ time: { [ Op.gte ]: req.query.start_time } },
{ time: { [ Op.lte ]: req.query.end_time } }
]
}
};
await model_name.findAll(whereClause);