gpt4 book ai didi

javascript - 模仿 [colA] 和 [colB] 之间的 [condition] Sequelize

转载 作者:行者123 更新时间:2023-12-03 22:24:45 26 4
gpt4 key购买 nike

寻求在 sequelize 中复制以下 mssql 操作的帮助。我们有一个包含 valid_from 和 valid_to 列的表,我需要获取今天的当前日期,并且只返回基于该日期的记录。
我希望在 sequelize 中使用 .findByPK() 或 .findAll() 方法

SELECT * FROM [table] WHERE GETUTCDATE() BETWEEN f.valid_from AND f.valid_to 
我发现以下帖子和项目没有运气。因为他们似乎在同一列之间指定了两个不同的日期。我需要比较两个不同列之间的当前 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')
}
}
}
});

最佳答案

您可以使用 sequelize.where() 编写此查询以生成 BETWEEN 操作的 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`

note that you have underscored valid_from and camelCase validTo in your example.

关于javascript - 模仿 [colA] 和 [colB] 之间的 [condition] Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65886557/

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