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

How to set Knex date to 30 days in the future

我觉得这个问题真的很简单,但我找不到答案。

在 Knex 中,我可以使用 knex.fn.now() 在我的数据库中设置时间戳 但是现在我需要在 now 后 30 天设置一个日期,这是像 knex.fn.now() + 30 工作一样简单还是有其他技巧?

任何帮助,即使 link 来自不同的来源,我们也将不胜感激。 提前谢谢你

knex.fn.now() 将在数据库上执行 CURRENT_TIMESTAMP 函数,从 1/1/1970 开始 returns 时间戳 ms

您可以使用数据库内置方法计算未来日期。 在 MySQL 这个方法调用 date_add.

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

对于 Knex,您需要使用 raw 方法。

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

编辑:

在 postgress 中,此查询将如下所示:

  SELECT CURRENT_DATE + INTERVAL '1 day';

因此,在 Knex 中它将是:

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

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

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

这有效:

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