Я хочу запросить строки в день в следующем порядке:
В настоящее время я делаю простой запрос:
getLatest(howMany, offset) {
return knex
.select('*')
.from('event')
.orderBy('start_time', 'asc')
.offset(offset)
.limit(howMany);
}
Но проблема с этим заключается в том, что он показывает прошлые временные метки в первую очередь. Я знаю, что могу пропустить такие записи:
knex('event')
.select('id')
.whereRaw("start_time < NOW()")
UPDATE: Есть ли способ сделать эту работу со смещением? Этот запрос будет запускаться для бесконечного фида каждый раз, когда пользователи достигнут дна, чтобы получить больше событий. Возможно, индексирование?
Это моя схема:
knex.schema.createTable('event', (table) => {
table.increments().primary();
table.dateTime('start_time').notNullable();
})
Вам нужно будет использовать orderByRaw
для создания предложения ORDER BY
, например
ORDER BY start_time < current_timestamp, start_time
current_date
.current_timestamp
возвращает текущее время, аcurrent_date
- начало дня.