如何选择从开始日期到结束日期(即不包括结束日期)开始的序列化数据
How to select data with sequelize from startdate upto the beginning of enddate (meaning excluding the enddate)
我得到了数据集。数据集的属性之一是"时间戳"。我想选择(有效地)数据集,得到时间戳从一个特定的开始日期开始,直到一个特定的结束日期。但是,结束日期本身不应该包括在内。所以我想要的是:dataSet WHERE timestamp >= startDate AND timestamp < endDate
我有一个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)
结束日期本身(即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}
}
它会给我错误的结果。(对不起,我不能在这里具体说明,因为我现在不能访问系统。我记得它没有返回我想要的结果。当我可以再次访问数据库时,我会更新这部分。
我知道我可以设置enddate为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
也许这是一个解决方案的起点
相关文章:
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 使用javascript&自定义验证器检查开始日期和结束日期
- 如何在dhtmlxgantt中显示灯箱中的开始日期、结束日期和持续时间
- 如何在javascript中获得给定的月份开始日期和结束日期
- 在选择开始日期后设置结束日期
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 基础日期选择器、结束日期(和时间)不能早于开始日期(和时间)
- 结束日期作为基础日期时间选择器中的选定开始日期
- 开始日期和结束日期输入字段的 JQuery 筛选器表
- 在ExtJS中获取开始/结束日期之间的日期
- 转换mysql的Fullcalendar开始/结束日期
- angularjs提交表单中的开始日期结束日期验证应被禁用
- Jquery FullCalendar扩展开始日期或结束日期
- 从jquery中的开始日期计算结束日期
- 检查开始日期是否小于结束日期(不使用任何pluguin)
- 如何在引导程序中比较结束日期和开始日期,以确保结束日期大于开始日期
- JSON Linq.js 筛选开始日期结束日期列
- Jquery UI日期起始日期和日期结束字段验证
- 比较日期——结束日期应该大于开始日期
- j使用时区/开始日期/结束日期查询进度条