我认为这个问题确实很简单,但是我找不到答案。
在Knex中,我可以使用knex.fn.now()
在数据库中设置时间戳记
但是,现在我需要在now
之后30天设置一个日期,是否像knex.fn.now() + 30
那样简单,还是还有其他窍门?
我们非常感谢您的帮助,甚至链接到其他来源。 预先谢谢你
答案 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'])