如何在sequelize中存储本地日期时间?

时间:2015-02-09 13:08:41

标签: node.js sequelize.js

我正在使用sequelize的2.0.0-rc8版本。当我存储本地日期时间时,它始终存储UTC日期时间。是否可以使用sequelize存储本地日期时间?

2 个答案:

答案 0 :(得分:9)

正如其他人已经在评论中暗示的那样,sequelize将日期转换为UTC - 这是设计的,因为它使续集更容易使用,并确保不同时区的续集客户端将看到相同的时间戳。

在javascript中,日期将始终位于服务器的本地时间 - 这是javascript日期对象的属性。

您可以使用timezone选项告诉sequelize将日期存储在其他时区:

new Sequelize(db, user, pass, {
  timezone: '+01:30'
});

这将使用该时区保存所有日期,并假设当前保存在数据库中的所有日期都在该时区

答案 1 :(得分:0)

也许您应该在mysql中正确存储UTC时间,以便不需要时区。

例如,我的mysql服务器位于时区“ +08:00”,但是如果我将时区更改为“ -05:00”,则该操作不会中断任何操作。

只需像这样使用续集即可:

“ mysql2”:“ ^ 1.6.4”, “ sequelize”:“ ^ 4.41.2”

const sequelize = new Sequelize(database, username, password, {
    host: hostname,
    port: port,
    dialect: 'mysql',
    dialectOptions: {
        typeCast: function (field, next) {
            if (field.type == 'DATETIME' || field.type == 'TIMESTAMP') {
                return new Date(field.string() + 'Z');
            }
            return next();
        }
    },
    operatorsAliases: false,
    pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000
    }
});