gpt4 book ai didi

database - Sequelize 减去 updatedAt 和 createdAt 转换成秒后

转载 作者:行者123 更新时间:2023-12-03 22:19:02 27 4
gpt4 key购买 nike

嘿,我对 SEQUELIZE 真的很陌生,对于这个项目,我试图在转换为秒后扣除 updatedAtcreatedAt 值。
Updated 和 createdAt 列采用 DATETIME 格式。其中一行包含 createdAt 值作为 2021-03-03 21:30:58 和 updatedAt 作为 2021-03-03 22:42:05 。有没有办法可以先将该值转换为秒,然后再扣除它。我在下面尝试过,但它没有格式化为秒,而且 timePlayed 总是将结果显示为 14000。
任何人都可以让我知道我想在 sequelize 上做什么以将日期格式化为秒,然后减去 createdAtupdatedAt 之间的值?

router.get(
"/sessions/average_team_time",
(req, res) => {
models.Session.findAll({
createdAt: sequelize.literal('createdAt * 100000'),
updatedAt: sequelize.literal('updatedAt * 100000')
'attributes': [
'id',
'createdAt',
'updatedAt',
[Sequelize.fn('time', Sequelize.col('updatedAt')), 'updatedAtHour'],
[Sequelize.fn('date_format', Sequelize.col('createdAt'), '%Y-%m-%d %H:%m:%S'), 'date_formed'],
[Sequelize.literal('(updatedAt - createdAt)'), 'timePlayed']
]
})
.then((sessions) => {
res.json(sessions);
})
.catch((err) => res.json(err));
}
);

最佳答案

db.Session.findAll({
attributes: [
'id',
'createdAt',
'updatedAt',
[Sequelize.fn('TIMESTAMPDIFF', Sequelize.literal('SECOND'), Sequelize.col("createdAt"), Sequelize.col("updatedAt")), 'timePlayed']

]
})
.then(resp => res.send(resp))
.catch(error => res.send({ status: false, error: error }))
有时,javascript 比 sequelzie 更强大
db.Session.findAll({
// createdAt: sequelize.literal('createdAt * 100000'),
// updatedAt: sequelize.literal('updatedAt * 100000'),
attributes: [
'id',
'createdAt',
'updatedAt',
[Sequelize.fn('time', Sequelize.col('updatedAt')), 'updatedAtHour'],
[Sequelize.fn('date_format', Sequelize.col('createdAt'), '%Y-%m-%d %H:%m:%S'), 'date_formed'],
// [Sequelize.literal('(updatedAt - createdAt)'), 'timePlayed']
]
})
.then((sessions) => {
sessions = JSON.parse(JSON.stringify(sessions))
sessions = sessions || []
sessions = sessions.map(item => {
item.timePlayed = new Date(item.updatedAt).getTime() - new Date(item.createdAt).getTime()
return item;
})
res.json(sessions);
})
.catch((err) => res.json(err));

或者,我们可以使用 DataTypes.VIRTUAL
型号:定义
Session.init({
timePlayed: {
type: DataTypes.VIRTUAL,
get() {
return new Date(this.updatedAt).getTime() - new Date(this.createdAt).getTime()
}
}
})

...

db.Session.findAll({
attributes: ['id', 'createdAt', 'updatedAt', 'timePlayed']
})
.then(resp => res.send(resp))
.catch(error => res.send({ status: false, error: error }))

关于database - Sequelize 减去 updatedAt 和 createdAt 转换成秒后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66482055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com