Node.js Postgres/Knex如何获取两个时间戳之间包含指定时间段的所有条目
我正在使用Postgres数据库构建一个应用程序,它涉及比较时间表。我使用knex将其连接到节点;但是,如果解决方案最好由原始查询提供,我也可以走这条路 我有一个名为Node.js Postgres/Knex如何获取两个时间戳之间包含指定时间段的所有条目,node.js,postgresql,timestamp,knex.js,timestamp-with-timezone,Node.js,Postgresql,Timestamp,Knex.js,Timestamp With Timezone,我正在使用Postgres数据库构建一个应用程序,它涉及比较时间表。我使用knex将其连接到节点;但是,如果解决方案最好由原始查询提供,我也可以走这条路 我有一个名为“Schedules”的表,其中包含“from\u time”和“to\u time” 我希望能够给db一个“开始时间”和“结束时间”并找到: 可以包含“开始时间”和“结束时间”(即从\u时间=到\u时间)的所有计划 与“开始时间”和“结束时间”重叠的所有时间表(即。, (开始时间从时间开始)| |(开始时间=从时间开始) 我考虑过
“Schedules”
的表,其中包含“from\u time”
和“to\u time”
我希望能够给db一个“开始时间”
和“结束时间”
并找到:
“开始时间”
和“结束时间”(即从\u时间=到\u时间)的所有计划
“开始时间”
和“结束时间”
重叠的所有时间表(即。,
(开始时间从时间开始)| |(开始时间<到时间和结束时间>=从时间开始)
我考虑过的一个可能的解决方案是在Unix环境中将值存储为整数。。。这是我的备份计划。然而,因为这些实际上是时间值,所以最好将它们保存在时间戳值格式中。这是您的第一个条件
knex.select('*').from('Schedules').where('from_time', '<=', start_time).where('to_time', '<=', end_time)
knex.select('*')。from('Schedules')。where('from_time','=',start_time)。where('from_time','',start_time)。where('from_time','Dofrom_time
和to_time
表示时间戳或时间?如果它们确实表示时间,那么跨越00:00时间有意义吗?(即:日程从22:00开始,到次日02:00结束)。当你得到结果时:你需要区分重叠
和包含在
中(这只是重叠
的特例)吗?看看,这就是你要找的吗?你能澄清问题吗?我不太明白你想在这里找到什么。
knex.select('*').from('Schedules').where(function () {
this.where('from_time', '>=', start_time).where('from_time' ,'<', end_time))
}).orWhere(function () {
this.where('to_time', '>', start_time).where('from_time' ,'<=', end_time))
})