在sequelize中复制以下mssql操作时寻找帮助。我们有一个包含valid_from和valid_to列的表,我需要获得今天的当前日期,并且只返回基于此的记录。
我希望利用.findByPK()或.findAll()方法进行后缀
SELECT * FROM [table] WHERE GETUTCDATE() BETWEEN f.valid_from AND f.valid_to 我发现以下的帖子和项目没有运气。因为它们似乎在同一列之间指定了两个di9ffernt日期。我需要比较两个不同列之间当前的UTCDATE
Sequelize Query to find all records that falls in between date range
Sequelize query - compare dates in two columns
我能够模拟,但仍然想知道是否有人知道如何使用between操作符做同样的事情。
const now = new Date();
return await models.Form.findAll({
where: {
valid_from: {
[Op.lte]: Sequelize.cast(now, 'DATETIMEOFFSET')
},
[Op.and]: {
validTo: {
[Op.gte]: Sequelize.cast(now, 'DATETIMEOFFSET')
}
}
}
});发布于 2021-01-26 18:40:12
可以使用sequelize.where()编写此查询,以便为中间操作生成WHERE语句。对于当前的时间戳,您需要调用GETUTCDATE(),这是我们可以通过sequelize.fn()完成的。
const forms = await models.Form.findAll({
where: {
// create where condition for GETUTCDATE()
sequelize.where(sequelize.fn('GETUTCDATE'), {
// BETWEEN valid_from AND validTo
[Op.between]: [
sequelize.col('valid_from'),
sequelize.col('validTo')
],
}),
},
});这将生成SQL,如:
SELECT * FROM `form`
WHERE GETUTCDATE() BETWEEN `valid_from` AND `validTo`注意,您在示例中强调了
valid_from和camelCasevalidTo。
https://stackoverflow.com/questions/65886557
复制相似问题