我尝试运行一个简单的查询,如下所示
Insert into table (somedate) values ('2018-06-11 23:59:00')
但Sequelize将其执行为
Insert into table (somedate) values ('2018-06-12 02:59:00')
有没有一个选项可以“按原样”设置日期,而不进行任何转换或更改?
发布于 2018-06-12 09:00:19
实际上,您可以告诉sequelize在读取时不要将其转换为UTC,也可以在写入时提供时区
const sequelize = new Sequelize('db_name', 'postgres', 'postgres', {
host: '127.0.0.1',
dialectOptions: {
useUTC: false //for reading from database
},
dialect: 'postgres',
timezone: '+05:30', // for writng
});
发布于 2018-06-11 21:32:09
我为你找到了一个老生常谈的解决方案。你必须编辑一个序列化文件,这并不总是一个选项,但它可能会解决你的问题。
打开sequelize/lib/data-types.js
,你会看到
DATE.prototype._stringify = function _stringify(date, options) {
date = this._applyTimezone(date, options);
return date.format('YYYY-MM-DD HH:mm:ss.SSS Z');
};
date.format()
函数中的Z
表示“当前时区”,请尝试删除该Z
:
return date.format('YYYY-MM-DD HH:mm:ss.SSS');
https://stackoverflow.com/questions/50798083
复制相似问题