在nodejs中保存日期时,Sequelize出错了

时间:2016-11-16 16:23:30

标签: node.js sequelize.js

我尝试使用Sequelize,Nodejs将对象存储到Mysql。每件事情都没问题,除了时间戳出错了。有我的界限:

  var log = {
        id: id,
        error_code: error_code,
        created_at: moment().format('YYYY-MM-DD HH:mm:ss'),
        updated_at: moment().format('YYYY-MM-DD HH:mm:ss')
  }
  models.ErrorLog.create(log).then(function(log){
        console.log('Create Log');
        console.log(log);
  });

关注这两个时间戳字段,我已经记录并在创建它时看到它是正确的。

var log = {
     created_at: '2016-11-16 22:51:24',
     updated_at: '2016-11-16 22:51:24'
}

但是,这在mysql记录中是错误的:

{
     created_at: '2016-11-17 05:45:34',
     updated_at: '2016-11-17 05:45:34'
}

在MySql中,这些字段定义为:

- created_at: timestamp, nullable
- updated_at: timestamp, nullable

这是非常基本的,所以我不知道发生了什么。太奇怪了! 我的错误在哪里?

1 个答案:

答案 0 :(得分:2)

在创建数据库连接时使用Sequelize options.timezone属性,以确保应用程序和MySQL服务器都设置为相同的时区偏移量。

  

[options.timezone =' 00:00']

     

字符串

     

将日期从数据库转换为JavaScript日期时使用的时区。连接到服务器时,时区也用于设置TIMEZONE,以确保NOW,CURRENT_TIMESTAMP和其他时间相关功能的结果具有正确的时区。为获得最佳跨平台性能,请使用格式+/- HH:MM。也会接受moment.js使用的字符串版本的时区(例如' America / Los_Angeles');这对于捕捉夏令时变化非常有用。