【问题标题】:how to strip timestamp of +00:00 in sequelize如何在续集中去除 +00:00 的时间戳
【发布时间】:2021-12-21 18:29:09
【问题描述】:

我正在使用 Sequelize 将对象映射到我已经存在的数据库中,在这个数据库中他们没有使用自动生成的时间戳,他们做了自己的日期时间工作,数据库存储日期的当前方式是在 YYYY-MM-DD HH:MM:SS.MS 但是使用续集,我正在返回一个看起来像 YYYY-MM-DD HH:MM:SS.MS +00:00 的日期,我相信这是让我绊倒的原因。当我收到错误Conversion failed when converting date and/or time from character string. 时,我什至尝试访问Date() 对象并构建我自己的日期字符串,但我得到了同样的错误。即使它遵循正确的格式。

对于我的模型,我在 CreateDateTime 有这个(这是数据库中字段的名称。

CreateDateTime: {
  type: DataTypes.DATE,
  defaultValue: `${date.getFullYear()}-${date.getMonth()}-${date.getDay()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}.${date.getMilliseconds()}`,
    },
UpdateDateTime: {
  type: DataTypes.DATE,
},

我也将 sequelize 提供的时间戳重命名为上面的适当名称。除了可能使用 sequelize 提供的时间戳并删除现有的时间戳之外,我不确定如何解决这个问题。虽然 id 宁愿不这样做。即使最终将此数据库移至自动生成时间戳的更好架构。

有没有解决这个错误的不同方法?无论我似乎做什么,sql插入查询似乎总是将+00:00添加到最后,这是使用DataTypeDATE的某种默认值吗?我应该使用不同的数据类型吗?

【问题讨论】:

    标签: mysql date datetime sequelize.js


    【解决方案1】:

    所以我发现之前的团队可能没有存储实际的 datetime 时间戳,因为一旦我将 DataType 从 DATE 更改为 STRING 它工作得很好,我不再收到这个错误,但它仍然让我觉得很奇怪,因为当我使用我的 DB exporer(我使用 Razor)时,当我有表 described 给我时,它清楚地指出这些字段是 datetime 而不是 varchar,所以我不确定为什么会这样,只是它遵循适当的模式并且确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多