如何在 knex.js 上为 CURRENT_TIMESTAMP 添加时间?

Posted

技术标签:

【中文标题】如何在 knex.js 上为 CURRENT_TIMESTAMP 添加时间?【英文标题】:How to add time to the CURRENT_TIMESTAMP on knex.js? 【发布时间】:2021-09-08 09:57:00 【问题描述】:

我有这样的knex声明:

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

有 3 个时间戳字段 created_atupdated_atexpired_at。先2没问题,但是不知道怎么加expired_atlike+1分钟。

在伪代码上我看起来像:

expired_at: knex.raw('CURRENT_TIMESTAMP + 1 minute')

那么,如何使用CURRENT_TIMESTAMP 来增加时间?

【问题讨论】:

【参考方案1】:

你可以使用knex.fn.now()在数据库上执行CURRENT_TIMESTAMP函数,你需要使用mysql内置的方法来计算你未来的日期

在官方文档中查看 mysql date functions

例如:

knex.raw('SELECT date_add(?, INTERVAL ? day)', [knex.fn.now(), 1])

【讨论】:

以上是关于如何在 knex.js 上为 CURRENT_TIMESTAMP 添加时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 knex.js 迁移中链接承诺

如何在 Knex.js 中正确设置“updatedAt”时间戳?

如何在 Knex JS 中使用 IS NOT NULL

如何在 knex.js 中的“join”的“on”条件下使用“and”

如何使用 Knex.js 查询多对多关系?

如何在 knex.js 模式的增量列中添加一个字母?