如何在 Sequelizejs 中存储 ISO 8601 日期时间

How to store ISO 8601 Datetime in Sequelizejs

提问人:Garbit 提问时间:5/30/2018 更新时间:9/12/2021 访问量:1435

问:

我正在尝试在 Sequelize 4.0 中存储 UTC ISO 8601 日期时间对象,但是我只能在我的模型中指定 DateType.Date。当我在插入数据时使用格式化的 ISO 8601 日期时间字符串时,我收到解析错误:

"Incorrect datetime value: '2018-05-14T14:29:21.338Z' for column 'columnName' at row 1"

我的模型如下所示(简化问题):

module.exports = (sequelize, DataTypes) => {
  var deviceData = sequelize.define('deviceData', {
    steps: DataTypes.INTEGER,
    recordedOn: DataTypes.DATE,
    batteryLevel: DataTypes.INTEGER,
  }, {});

  return deviceData;
};

数据库配置如下所示;

module.exports = {
  development: {
    database: 'DATABASENAME',
    username: 'MYUSERNAME',
    password: 'MYPASSWORD',
    dialect: 'mysql',
    host: 'HOSTNAME'
  },
  testing: {
    dialect: 'sqlite',
    storage: ':memory:',
    logging: false
  }
};

我声明我的 Sequelize 实例如下:

const fs = require('fs');
const path = require('path');

const basename = path.basename(__filename);
const Sequelize = require('sequelize');
let config = require('../config/db.js');

const db = {};
db.sequelize = new Sequelize(config.database, config.username, config.password, config);
db.Sequelize = Sequelize; 

module.exports = db;

我无法决定是否应该在插入数据库之前将所有 ISO 8601 日期时间对象解析为 datetime 对象,或者 Sequelize 是否能够将 ISO 8601 日期时间对象与数据库中的日期时间对象一起解释。

日期时间 续集.js ISO8601

评论

0赞 user 7/2/2022
Sequelize 仍然不允许存储没有时区的日期。

答: 暂无答案