我正在尝试进行以下查询:
SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'
如何以sequelize样式执行上面的查询?
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' }
]
}
});
https://sequelize.org/v3/docs/querying/#operators
您必须将date_part
函数添加到查询中:
sequelize.where(sequelize.fn("date_part",'year',sequelize.col('dateField')), 2020)
TABLE.findAll({
where: sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
});
这里必须使用.hwhere,因为表达式的左手边(键(是一个对象,所以它不能在常规POJO样式中用作对象键。
如果你想将其与其他条件相结合,你可以这样做:
var Sequelize require('sequelize')
var Op = Sequelize.Op
TABLE.findAll({
where: {
foo: 'bar',
[Op.and]:sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
}
});
https://sequelize.org/v5/manual/querying.html#operators