mysql使用Sequelize时间如何格式化?(node版本)

30 阅读1分钟

问题:

按照常规连接池的方式,我们会发现,在日期相关字段会出现两个问题:
1、时间不对,似乎慢了8小时;
2、查询出来的时间,类似:2023-08-08T09:32:03

这显然与我们想要的不同,下面介绍如果通过配置Sequelize解决这两个常见问题。

问题1:

原因:时区默认是0时区;而我们所在地区为东8区;即+8:00;会比0时区多8小时或者说快8小时;

解决方案:
new Sequelize(dbName, user, password, {
  dialect: 'mysql',
  host: host,
  port: port,
  timezone: '+08:00',//解决时区问题
})

问题2:

原因:默认时间查询出来为UTC时间,我们通过配置字段处理一下即可

解决方案:
 new Sequelize(dbName, user, password, {
      dialect: 'mysql',
      host: host,
      port: port,
      timezone: '+08:00',//解决时区问题
      dialectOptions: {
        dateStrings: true,
        typeCast: true
      },//解决UTC时间问题
  })