Sequelize 仅在 (mysql) 表中存储日期部分

Jun*_*aid 5 mysql node.js sequelize.js

我的应用程序只想将日期部分存储在表之一中。在 Sequelize 中,只能使用一种数据类型, 。Sequelize.DATE它在 MySQL 表上创建DATETIME列。

如何在数据库表中有一列仅存储日期而不存储时间。部分?MySQL 有单独的DATEDATETIME数据类型,但无法在 Sequelize 中找到一种方法来说明这一点。

或者我们可以在使用 Date 对象运行查询时忽略时间部分吗?(我知道我们可以使用具有属性的getter 和 setter。不知道在运行具有日期字段条件的查询时它是否有效。)

PRS*_*PRS 5

值得注意的是... Sequelize v3 中的 DATEONLY 类型未按预期工作。它返回带有时区的日期时间,因此如果您正在进行日期比较,除非您的服务器时区为 GMT,否则它们将无法按您的预期工作。就我而言,我正在跨时区处理假期,所以这对我来说是一个头痛的问题。截至 2016 年 11 月 1 日,他们确实在 master 分支上进行了修复,但尚未进入 v3,而且还没有 v4。要暂时解决此问题,您可以在模型定义中执行此操作,我在同一链接中找到了该定义:

regDate: {
  type: DataTypes.DATEONLY,
  get: function() {
    return moment.utc(this.getDataValue('regDate')).format('YYYY-MM-DD');
  }
}
Run Code Online (Sandbox Code Playgroud)