我正在使用Node Express和Sequelize,我想将数据库中列“date”的defaultValue设置为今天的日期。我尝试了下面的迁移,但它不起作用,因为它将默认日期设置为与我运行迁移时的日期相同。我希望将其设置为与创建行时相同的日期。
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'Todos',
'date',
{
type: Sequelize.DATEONLY,
allowNull: false,
defaultValue: new Date()
}
)
},
我不明白这是怎么回事。
9条答案
按热度按时间kxe2p93d1#
您需要使用MySQL函数
NOW()
作为默认值。所以你的列声明应该看起来像这样:
请记住,这不会填充迁移中的字段。它们将是空的,因为它们不是用sequelize创建的。
brgchamk2#
Sequelize.NOW
将在未来的工作,但一些版本(我尝试4.43.0)似乎不支持它。我使用Sequelize.fn('now')
成功设置了now()
。参考:https://github.com/sequelize/sequelize/issues/4679
46scxncf3#
https://github.com/sequelize/sequelize/issues/645#issuecomment-18461231
uplii1fm4#
SQL Server用户必须使用
literal('CURRENT_TIMESTAMP')
7tofc5zh5#
使用“literal”,见下文。
zengzsys6#
2019 -05- 18 2019 -05-18
根据最新的Sequelize Doc(版本v6)
p4tfgftt7#
我不得不用
ulmd4ohb8#
只有这个对我有用。
bxjv4tth9#
只有这个对我有用。