我正在尝试提出这个查询:
SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'
如何以续集风格执行上面的查询?
TABLEA.findAll({
where:{}//????
}
谢谢!
TABLEA.findAll({
where: sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
});
这里必须使用
.where
,因为表达式的左边(键)是一个对象,所以不能在常规 POJO 风格中用作对象键。
如果您想将其与其他条件结合使用,您可以这样做:
TABLEA.findAll({
where: {
$and: [
sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016),
{ foo: 'bar' }
]
}
});
您必须将
date_part
函数添加到您的查询中:
sequelize.where(sequelize.fn("date_part",'year',sequelize.col('dateField')), 2020)
如果您对sequelize.where有疑问,请尝试将其包装到and中:
where: {
[Op.and]: [
sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
]
},
不要忘记
const { Op } = require("sequelize");