defaultValue:sequlize.NOW 插入mysql后时间差8个小时

发布于 2022-09-05 23:26:32 字数 373 浏览 10 评论 0

nodejs+mysql+sequlize,
定义数据model的时候使用如下:
createTime: { type: DataTypes.DATE, defaultValue: DataTypes.NOW },

但是实际插入的时间总是和现在相隔8个小时,
已经在mysql中设置过时区,进去mysql查询到的时间是正常的,但是不知道为什么defaultValue会少8个时间,不知道有没有人见过这个问题

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌酱 2022-09-12 23:26:32

https://segmentfault.com/q/10...
在小伙伴的帮助下找到了相关答案,详情参考以上链接的第一条回复。

大致总结就2种方法:
1.
const Sequelize = require('sequelize');

const sequelize = new Sequelize('dbname', 'username', 'password', {

host: 'localhost', 
dialect: 'mysql',
pool: {
    max: 50,
    min: 0,
    idle: 10000
},
timezone: '+08:00' //东八时区

});

2.
程序中设置process.env.TZ = 'Asia/Shanghai';
const Sequelize = require('sequelize');

const sequelize = new Sequelize('dbname', 'username', 'password', {

host: 'localhost', 
dialect: 'mysql',
pool: {
    max: 50,
    min: 0,
    idle: 10000
},
timezone: process.env.TZ 

});

之前在做的就是这种,因为设置了环境变量却依旧得不到正确的时间,以为是数据库的问题。后面看到API才知道,需要在sequlize里面引用,否则没用。

羁绊已千年 2022-09-12 23:26:32

应该还是时区的问题,UTC,东八区CST,看下这篇文章中JS与MySQL之间转换造成的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文