如何将Knex日期设置为未来30天

时间:2019-08-23 20:08:31

标签: node.js database-migration knex.js

我认为这个问题确实很简单,但是我找不到答案。

在Knex中,我可以使用knex.fn.now()在数据库中设置时间戳记 但是,现在我需要在now之后30天设置一个日期,是否像knex.fn.now() + 30那样简单,还是还有其他窍门?

我们非常感谢您的帮助,甚至链接到其他来源。 预先谢谢你

2 个答案:

答案 0 :(得分:1)

knex.fn.now()将在数据库上执行CURRENT_TIMESTAMP函数,该函数将从1970年1月1日起以 ms 为单位返回时间戳。

您可以使用内置的db方法来计算将来的日期。 在 MySQL 中,此方法调用date_add

SELECT date_add(now(), INTERVAL 30 day);

使用Knex,您将需要使用raw方法。

knex.select(knex.raw('date_add(?, INTERVAL ? day)', [knex.fn.now(), 30]));

编辑:

在后端,该查询将类似于:

  SELECT CURRENT_DATE + INTERVAL '1 day';

因此,在Knex中将是:

knex.select(knex.raw(`? + INTERVAL '? day'`, [knex.fn.now(), 30]));

答案 1 :(得分:0)

感谢您之前的回答,但 Postgresql 示例对我不起作用。

当我尝试 knex.raw(`? + INTERVAL '? day'`, [knex.fn.now(), 30]) 时,出现错误 "could not determine data type of parameter"

这有效:

knex.raw(`? + ?::INTERVAL`, [knex.fn.now(), '30 day'])