我尝试使用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
这是非常基本的,所以我不知道发生了什么。太奇怪了! 我的错误在哪里?
答案 0 :(得分:2)
在创建数据库连接时使用Sequelize options.timezone
属性,以确保应用程序和MySQL服务器都设置为相同的时区偏移量。
[options.timezone =' 00:00']
字符串
将日期从数据库转换为JavaScript日期时使用的时区。连接到服务器时,时区也用于设置TIMEZONE,以确保NOW,CURRENT_TIMESTAMP和其他时间相关功能的结果具有正确的时区。为获得最佳跨平台性能,请使用格式+/- HH:MM。也会接受moment.js使用的字符串版本的时区(例如' America / Los_Angeles');这对于捕捉夏令时变化非常有用。