Javascript 如何选择从startdate到enddate开始的sequelize数据(意味着不包括enddate)
我有数据集。数据集的属性之一是“时间戳”。我想选择(有效地)从某个开始日期到某个结束日期具有时间戳的数据集。但是,不应包括结束日期本身。所以基本上我想要这个:Javascript 如何选择从startdate到enddate开始的sequelize数据(意味着不包括enddate),javascript,mysql,date,couchdb,sequelize.js,Javascript,Mysql,Date,Couchdb,Sequelize.js,我有数据集。数据集的属性之一是“时间戳”。我想选择(有效地)从某个开始日期到某个结束日期具有时间戳的数据集。但是,不应包括结束日期本身。所以基本上我想要这个:dataSet,其中timestamp>=startDate和timestamp
dataSet,其中timestamp>=startDate和timestamp
我有一个couchDB,我想用sequelize进行选择
假设开始和结束日期如下所示:
var startDate = '2015-07-29 00:00:00';
var endDate = '2015-07-30 00:00:00';
然后,从这些日期开始的所有内容都应包括在内:
2015-07-29 00:00:00 (<--startDate)
2015-07-29 00:00:01
2015-07-29 00:00:02
....
2015-07-29 23:59:59 (<--my desired end-Date. It's right before endDate)
这给我提供了带有时间戳的数据集,包括开始日期和结束日期。我只想知道截止日期。不包括结束日期本身
而下面的查询应该给出正确的结果(dataSet>=startDate和dataSet我知道我可以将enddate设置为
2015-07-29 23:59:59
。但是我觉得有一种更优雅的方法。第二个示例不起作用,因为对象中有两个相同的键(时间戳)。这在javascript中是不允许的,因此其中一个被忽略
您应该将这两个代码包装在$和中:
db.answer.findAll({
where: {
id: {in: [myId]},
$and: [
{ timestamp: {gte: startDate} },
{ timestamp: {lt: endDate} }
]
}
});
我不知道sequelize,但是couchdb提供了一个参数inclusive\u end
,可以在文档中找到:
也许这是一个解决方案的起点。您是否尝试过在之间的中使用endDate-1
?@vivekpansara,谢谢您的回答。我正在寻找一种更优雅的方法。可能是查询或运算符(例如。“
db.answer.findAll({
where: {id: { in: [myId]},
timestamp: { gte: startDate},
timestamp: { lt: endDate}
}
db.answer.findAll({
where: {
id: {in: [myId]},
$and: [
{ timestamp: {gte: startDate} },
{ timestamp: {lt: endDate} }
]
}
});