You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在knex.js中为CURRENT_TIMESTAMP添加时间偏移量

解决方案

实现逻辑和你使用的数据库类型有关,不同数据库的时间运算语法存在差异,以下是常见数据库的对应写法:

  • MySQL 写法
expired_at: knex.raw('DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 1 MINUTE)')
  • PostgreSQL 写法
expired_at: knex.raw("CURRENT_TIMESTAMP + INTERVAL '1 minute'")
  • SQLite 写法
expired_at: knex.raw("DATETIME('now', '+1 minute')")

如果你希望实现数据库无关的写法,不需要适配不同数据库的语法差异,也可以直接在Node.js侧计算好过期时间再赋值:

// 先计算当前时间+1分钟的Date对象
const expiredAt = new Date(Date.now() + 60 * 1000);

return knex(table).insert({
  id: uuid.v4(),
  ...data,
  created_at: knex.raw('CURRENT_TIMESTAMP'),
  updated_at: knex.raw('CURRENT_TIMESTAMP'),
  expired_at: expiredAt
})

这种方案的唯一注意点是需要保证应用服务器和数据库服务器的时间同步,否则会出现时间偏差。

内容的提问来源于stack exchange,提问作者dokichan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:12:02