Node中Sequelize从mysql中查出的时间不对

发布于 2022-09-05 09:17:50 字数 1244 浏览 19 评论 0

我的node服务使用Sequelize来接已经创建好的mysql;
mysql的时间类型为timestamp,而在Sequelize中定义的模型是这样的:

  module.exports = function (sequelize, DataTypes) {
        var User = sequelize.define("user", {
            id: {
                type: DataTypes.BIGINT,
                primaryKey: true
            },
            create_time: DataTypes.DATE,
            update_time: DataTypes.DATE
        },{
            freezeTableName: true,
            timestamps: false
        });
        return User;
    };



当我往数据库插入一条记录时
var data = {
    id: 1234,
    create_time: new Date(),
    update_time: new Date()
};
User.create(data).then(function (result) {
    console.log('添加成功!');
}).catch(function (err) {
    console.log('添加失败!');
});

数据是这样显示的

clipboard.png

但是我查出来的记录却是这样的

{
"id": 1234,
"create_time": "2017-08-04T01:46:36.000Z",
"update_time": "2017-08-04T01:46:36.000Z"
}
数据库的时间是Linux时间,但是好像没用那个时间
我用sql语句查出来时间是对的,所以我觉得是Sequelize的问题.
我尝试用moment.UTC().format()来转化他,好像不好使.
但我觉得这样是不可取的,假设我要查1万条数据我不可能转化1万次吧!
我感觉是Sequelize中定义模型的问题,能有人帮帮我吗

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

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

发布评论

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

评论(1

╭⌒浅淡时光〆 2022-09-12 09:17:50

差了14个时区,感觉确实不对,改改试试:

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' //东八时区
});
module.exports = function (sequelize, DataTypes) {
        var User = sequelize.define("user", {
            id: {
                type: DataTypes.BIGINT,
                primaryKey: true
            },
            createdAt: {
                type: Sequelize.DATE,
                get() {
                    return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss');
                }
            },
            updatedAt: {
                type: Sequelize.DATE,
                get() {
                    return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss');
                }
            }
        },{
            freezeTableName: true,
            timestamps: false
        });
        return User;
    };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文