【发布时间】:2020-09-25 03:45:07
【问题描述】:
我在节点 12 上使用 sequelize 5.21.2。
我想变成这样:
SELECT `id`
FROM `order`
WHERE (substr(`order`.`code`,1,8) >= '20200101'
AND substr(`order`.`code`,1,8) <= '20201230')
所以我是这样写的:
return Model.order.findAll({
attributes: [
'id',
],
where: {
[sequelize.fn('substr', Model.sequelize.col('code'), 1, 8)]: {
[Op.gte]: params.start_date,
[Op.lte]: params.end_date,
},
},
});
但它会返回:
SELECT `order`.`id`
FROM `order`
WHERE (`order`.`[object Object]` >= '20200101'
AND `order`.`[object Object]` <= '20201230')
我试过了
[sequelize.literal('STR_TO_DATE(substr(code,1,8),\'%Y %m %d\')'), 'order_date']
[sequelize.literal('STR_TO_DATE(substr(code,1,8),\'%Y %m %d\')')]
[sequelize.fn('substr', Model.sequelize.col('code'), 1, 8)]
但是当我SELECT 时它们工作正常,但不是WHERE。
如何获得我想要的结果?我在官方手册中找不到任何相关信息.. (https://sequelize.org/v5/manual/querying.html#where)
【问题讨论】:
标签: node.js orm sequelize.js