我正在将sequelize与mysql一起使用,我想知道是否有一种方法可以使用sequelize来创建这样的SQL:
SELECT * FROM table WHERE DAY(dateAttribute) = 'chosen_day'
SELECT * FROM table WHERE MONTH(dateAttribute) = 'chosen_month'
我尝试过做这样的事情:
this.test= function () {
let searchingDate = "2017-05%";
return model.table.findAll({
where: {
dateAttribute: searchingDate
}
})
}
这可行,但它会发出弃用警告,表示它将在未来版本中删除。
感谢您的帮助!
最佳答案
找到解决方案!
所以我将sequelize.fn()与sequelize中的Op.and函数一起使用。所以解决方案是:
this.test = function () {
return model.tableName.findAll({
attributes: ['myAttribute'],
where: {
dateAttribute: {
[sequelize.Op.and]: [
sequelize.where(sequelize.fn('MONTH', sequelize.col('dateAttribute')), 5),
sequelize.where(sequelize.fn('DAY', sequelize.col('dateAttribute')), 5),
]
},
otherAttribute: 'someValue'
}
})
}
此代码生成此 SQL 查询:
SELECT myAttribute FROM tableName WHERE (MONTH('dateAttribute') = 5 AND DAY('dateAttribute') = 5) AND otherAttribute = 'someValue'
我希望能让你们免于进行我所做的这项漫长的研究! 记住要快乐!
关于mysql - Sequelize 为 DATE 类型创建 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53052063/