我的应用程序想要只在其中一个表中存储日期部分。在Sequelize中,只能使用一个data type,Sequelize.DATE
。在MySQL表上,它创建DATETIME
列。
如何让数据库表中的列只存储日期,而不是时间。部分?
MySQL有单独的DATE
和DATETIME
数据类型,但在Sequelize中找不到告诉它的方法。
或者我们可以在使用Date对象运行查询时忽略时间部分吗? (我知道我们可以将getters and setters用于属性。不知道在运行具有日期字段条件的查询时它是否有效。)
答案 0 :(得分:1)
自sequelize ^3.7.1
起,它确实支持DATEONLY
数据类型。
请参阅http://docs.sequelizejs.com/en/latest/api/datatypes/和https://github.com/sequelize/sequelize/blob/f678009d7514b81a6f87e12b86360e9a597e3ca8/lib/data-types.js#L357
用于实现。
答案 1 :(得分:1)
注意事项...... Sequelize v3中的DATEONLY类型无法正常工作。它返回带有时区的日期时间,因此如果您正在进行日期比较,除非您的服务器时区GMT,否则它们将无法按预期工作。就我而言,我正在跨越时区工作假期,所以这对我来说很头疼。它们在主分支上有一个fix as of 2016-11-01,但它还没有进入v3并且还没有v4。要解决此问题,您可以在我在同一链接上找到的模型定义中执行此操作:
regDate: {
type: DataTypes.DATEONLY,
get: function() {
return moment.utc(this.getDataValue('regDate')).format('YYYY-MM-DD');
}
}