javascript - 按日期升序索引,但最后显示过去的日期

标签 javascript postgresql knex.js

我想按照这个顺序按天查询行:

  1. 今天
  2. future
  3. 过去

目前我正在做这样一个简单的查询:

getLatest(howMany, offset) {
    return knex
        .select('*')
        .from('event')
        .orderBy('start_time', 'asc')
        .offset(offset)
        .limit(howMany);
}

但问题是它首先显示过去的时间戳。我知道我可以像这样获得过去的记录:

knex('event')
    .select('id')
    .whereRaw("start_time < NOW()")

更新:有没有办法使它与偏移一起工作?每次当用户到达底部以获取更多事件时,都会运行此查询以获取无休止的提要。也许索引?

这是我的架构:

knex.schema.createTable('event', (table) => {
    table.increments().primary();
    table.dateTime('start_time').notNullable();
})

最佳答案

你必须使用 orderByRaw创建一个 ORDER BY 子句,如

ORDER BY start_time < current_timestamp, start_time

关于javascript - 按日期升序索引,但最后显示过去的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45154550/

相关文章:

javascript - 如何判断弹出页面是否打开?

javascript - datetimepicker bootstrap 获取值并将其用作输入未定义的错误

java - 在 SQL 查询中测试 null

SQL:使用一个表中的数据将新数据插入到另一个表中

sql - knex插入多行

node.js - 将 knex SELECT 查询结果用于另一个 SELECT 查询

javascript - 对方法或属性访问的意外调用。 jquery.js?ver=1.7.1

javascript - 如何将多项选择 div 中的问题分开?

node.js - 如何在 sequelize 查询的 where 中使用关系?

node.js - 使用 knex-postgis 进行动态查询