【问题标题】:Sequelize store date part only in (mysql) table仅在(mysql)表中序列化存储日期部分
【发布时间】:2015-02-18 14:16:15
【问题描述】:

我的应用程序只想在一张表中存储日期部分。在 Sequelize 中,只有一个 data typeSequelize.DATE 可以使用。它在 MySQL 表上创建 DATETIME 列。

我怎样才能在数据库表中有一列只存储日期,而不存储时间。部分? MySQL 有单独的 DATEDATETIME 数据类型,但无法在 Sequelize 中找到一种方法。

或者我们可以在使用 Date 对象运行查询时忽略时间部分吗? (我知道我们可以将getters and setters 与属性一起使用。不知道在运行具有日期字段条件的查询时它是否会起作用。)

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      注意事项... 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');
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-09-25
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-19
        • 2016-09-12
        • 1970-01-01
        相关资源
        最近更新 更多