mysql - Sequelize 为 DATE 类型创建 SQL
问题描述
我正在使用 mysql 的 sequelize,我想知道是否有一种方法可以使用 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'
我希望使你们免于进行我所做的长期研究!记住要快乐!
推荐阅读
- debian - 特定版本的 Debian 打包控制文件
- c++ - 为模板重载函数模板
班级 - javascript - 通过http调用获取配置后如何在angular 7中动态初始化firebase
- arrays - 数组中最后一个非零值
- python - 使用 spacy 偏移格式构建 GoldDoc 以使用 CLI 训练空白模型
- protractor - 量角器如何在我的量角器 spec.js 文件的外部文件中调用已定义的 customerlocator.js
- python - 使用 LSTM 进行未来时间序列预测
- proguard - 在 Apache Flink 应用程序上运行 ProGuard
- mongodb - MongoDB 查询 - 子文档
- java - 如何将进程中的 Json 对象放入 Google Dataflow 中的 Bigquery 表中