如何将 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'])
我觉得这个问题真的很简单,但我找不到答案。
在 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'])