我正在尝试进行此查询:
SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'
如何在续集风格中执行上述查询?
TABLEA.findAll({
where:{}//????
}
谢谢!
答案 0 :(得分:12)
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' }
]
}
});
答案 1 :(得分:0)
您必须在查询中添加date_part
函数:
sequelize.where(sequelize.fn("date_part",'year',sequelize.col('dateField')), 2020)
答案 2 :(得分:0)
TABLE.findAll({
where: sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
});
这里必须使用.where,因为表达式(键)的左侧是一个对象,所以不能以常规POJO样式将其用作对象键。
如果要将其与其他条件结合使用,可以执行以下操作:
var Sequelize require('sequelize')
var Op = Sequelize.Op
let andOp = Op.and
TABLE.findAll({
where: {
foo: 'bar',
andOp:sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
}
});