簡體   English   中英

如何使用knex.js和objection.js在Postgres中查詢少於48小時的記錄?

[英]How to query for records less than 48 hours in Postgres using knex.js and objection.js?

我想使用created_at列查詢小於48小時的所有記錄。

在PostgreSQL中,您可以執行以下操作:

SELECT * from "media" WHERE updated_at >= now() - '48 hour'::INTERVAL;

我們如何在objection.js / knex.js中寫這個而不進入原始查詢(或者可能使用一些原始的部分相等)?

我有工作邏輯:

const { raw } = require('objection');

return SomeModel.query()
  .andWhere(raw('updated_at >= now() - \'48 HOUR\'::INTERVAL'))
  .orderBy('updated_at')
  .first();

但我想盡可能避免使用raw函數,例如:

return SomeModel.query()
  .where('updated_at', '>=', 'i have no idea what to put here')
  .orderBy('updated_at')
  .first();

首先想到的是,因為updated_at是一個new Date().toISOString()我可以做一些基於< new Date(new Date().getTime()-48*60*60*1000).toISOString()

但我不完全確定Postgres比較器將如何處理這個問題。

const { raw } = require('objection');

SomeModel.query()
  .where('updated_at', '>=', raw(`now() - (?*'1 HOUR'::INTERVAL)`, [48]))
  .orderBy('updated_at')
  .first();

還以一種小時數可以作為值綁定傳遞的方式編寫示例。 如果不必更改值,則使用常量now() - '48 HOUR'::INTERVAL也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM