Node.js 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时间)的所有计划 与“开始时间”和“结束时间”重叠的所有时间表(即。, (开始时间从时间开始)| |(开始时间=从时间开始) 我考虑过

我正在使用Postgres数据库构建一个应用程序,它涉及比较时间表。我使用knex将其连接到节点;但是,如果解决方案最好由原始查询提供,我也可以走这条路

我有一个名为
“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','Do
    from_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))
    })