节点Sequelize - 插入日期"按原样#34;没有转换为UTC

时间:2018-06-11 12:45:21

标签: javascript node.js sequelize.js

我试图运行像

这样的简单查询
Insert into table (somedate) values ('2018-06-11 23:59:00')

但是Sequelize将其作为

执行
Insert into table (somedate) values ('2018-06-12 02:59:00')

是否可以选择设置日期"按原样#34;没有以任何方式转换或更改它?

2 个答案:

答案 0 :(得分:1)

我为你找到了一个hacky解决方案。你必须编辑一个并不总是一个选项的Sequelize文件,但它可以解决你的问题。

打开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');
};

Z功能中的date.format()表示"当前时区",请尝试删除Z

return date.format('YYYY-MM-DD HH:mm:ss.SSS');

答案 1 :(得分:1)

你实际上可以告诉续集不要在阅读时将其转换为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
});