如何 select 数据从开始日期到结束日期开始进行续集(意味着不包括结束日期)
How to select data with sequelize from startdate upto the beginning of enddate (meaning excluding the enddate)
我得到了数据集。数据集的属性之一是 'timestamp'。我想要 select(有效地)数据集,这些数据集的时间戳从某个开始日期开始到某个结束日期。但是不应包括结束日期本身。所以基本上我想要这个:dataSet WHERE timestamp >= startDate AND timestamp < endDate
我有一个 couchDB,我想 select 使用 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)
不包括结束日期本身(即 2015-07-30 00:00:00
)。
这是我试过的:
db.answer.findAll({
where: {id: { in: [myId]},
timestamp: { between: {[startDate, endDate]}
}
这为我提供了带有时间戳的数据集,包括开始日期和结束日期。我只想要截止日期。不包括结束日期本身。
虽然下面的查询应该给我正确的结果 (dataSet >=startDate AND dataSet < endDate)
db.answer.findAll({
where: {id: { in: [myId]},
timestamp: { gte: startDate},
timestamp: { lt: endDate}
}
它会给我错误的结果。 (对不起,我不能在这里具体说明,因为我现在无法访问系统。我记得虽然它没有 return 我想要的结果。当我可以访问数据库时,我会更新这部分再次。)
我知道我可以将结束日期设置为 2015-07-29 23:59:59
。但我觉得有一种更优雅的方法。
第二个示例将不起作用,因为您在对象中有两次相同的键(时间戳)。这在 javascript 中是不允许的,因此其中一个被忽略。
你应该把这两个包裹在 $and
:
db.answer.findAll({
where: {
id: {in: [myId]},
$and: [
{ timestamp: {gte: startDate} },
{ timestamp: {lt: endDate} }
]
}
});
我不知道 sequelize,但是 couchdb 确实提供了一个参数 inclusive_end
,可以在文档中找到:https://wiki.apache.org/couchdb/HTTP_view_API
也许这是解决方案的起点。
我得到了数据集。数据集的属性之一是 'timestamp'。我想要 select(有效地)数据集,这些数据集的时间戳从某个开始日期开始到某个结束日期。但是不应包括结束日期本身。所以基本上我想要这个:dataSet WHERE timestamp >= startDate AND timestamp < endDate
我有一个 couchDB,我想 select 使用 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)
不包括结束日期本身(即 2015-07-30 00:00:00
)。
这是我试过的:
db.answer.findAll({
where: {id: { in: [myId]},
timestamp: { between: {[startDate, endDate]}
}
这为我提供了带有时间戳的数据集,包括开始日期和结束日期。我只想要截止日期。不包括结束日期本身。
虽然下面的查询应该给我正确的结果 (dataSet >=startDate AND dataSet < endDate)
db.answer.findAll({
where: {id: { in: [myId]},
timestamp: { gte: startDate},
timestamp: { lt: endDate}
}
它会给我错误的结果。 (对不起,我不能在这里具体说明,因为我现在无法访问系统。我记得虽然它没有 return 我想要的结果。当我可以访问数据库时,我会更新这部分再次。)
我知道我可以将结束日期设置为 2015-07-29 23:59:59
。但我觉得有一种更优雅的方法。
第二个示例将不起作用,因为您在对象中有两次相同的键(时间戳)。这在 javascript 中是不允许的,因此其中一个被忽略。
你应该把这两个包裹在 $and
:
db.answer.findAll({
where: {
id: {in: [myId]},
$and: [
{ timestamp: {gte: startDate} },
{ timestamp: {lt: endDate} }
]
}
});
我不知道 sequelize,但是 couchdb 确实提供了一个参数 inclusive_end
,可以在文档中找到:https://wiki.apache.org/couchdb/HTTP_view_API
也许这是解决方案的起点。