带有Sequelize的PostgreSQL与Timestamps表现得很奇怪

时间:2017-12-12 05:54:56

标签: node.js postgresql timezone

我是PostgreSQL的新手,并且第一次在NodeJS中使用Sequelize包。

  

我的当地时区:IST(+05:30)

     

Sequelize timezone:UTC(+00:00)

模型

SomeModel = psql.define('SomeModel', {
    month: {
        type: Sequelize.DATE,
        field: 'month'
    },
    uploadedDate: {
        type: Sequelize.DATE,
        field: 'uploaded_date'
    },
    name: {
        type: Sequelize.STRING,
        field: 'name'
    }
}, {
    tableName: 'some_table'
});

输入数据

  

月:' 2017年12月'

     

uploadedDate:' 2017年12月11日'

已保存的数据

  

月:' 2017-11-30'

     

uploadedDate:' 2017-12-10 02:00:00'

我理解月份字段UTC转换发送时间为5小时30分钟,因此11月再次发布但是在上传日期之后应该是' 2017-12-10 18:30:00'。 为什么PostgresSQL将它带到02:00,02:00发生了什么?

现在又一个奇怪的事情我不明白,当我尝试获取同一行时,值会再次改变。

输出值

  

月:' 2017-11-30'

     

uploadedDate:' 2017-12-09T20:30:00.000Z'

现在为什么它将已转换的时间再次转换为UTC,只是为了增加我的问题。

请帮助我错过的内容以及我如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

经过几天的搜索,我通过以下方式纠正了这一点并了解了整个情景。

  • 列没有存储时区(但在我的情况下不需要)
  • 查询被解雇4次,这使得日期转到凌晨2点即df1 = df.reindex(np.random.permutation(df.index)) 现在有意义了
  • 节点正在占用我服务器的本地时区,并在每次查询时将其转换为UTC。

解决方案是将我的服务器的时区转换为UTC,所有内容都像魅力一样工作而不需要修改代码。