【发布时间】:2016-12-16 02:39:12
【问题描述】:
我正在尝试进行此查询:
SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'
如何以 sequelize 风格执行上述查询?
TABLEA.findAll({
where:{}//????
}
谢谢!
【问题讨论】:
标签: javascript mysql node.js datetime sequelize.js
我正在尝试进行此查询:
SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'
如何以 sequelize 风格执行上述查询?
TABLEA.findAll({
where:{}//????
}
谢谢!
【问题讨论】:
标签: javascript mysql node.js datetime sequelize.js
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)
【讨论】:
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)
}
});
【讨论】: