mysql - Sequelize 为 DATE 类型创建 SQL

标签 mysql sequelize.js

我正在将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()与sequ​​elize中的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/

相关文章:

node.js - Sequelize 和 Postgres;如何设置值边界(总最小值/mac);和/或对更新运行验证

reactjs - Sequelize FindAll()

json - Hapi 响应不显示树状(嵌套)json

mysql - 我应该如何设计这个数据库?

php - CodeIgniter - 将 CSV 上传到数据库问题

javascript - 转换数据以制作 Google 图表

sql - 在 sequelize 中,如何选择与我正在搜索的所有值匹配的记录?

mysql - 如何在 Strapi v4 Typescript 上进行原始 sql 查询

mysql - 在 SQL 中聚合模型 "through"其他模型?

node.js - 为什么我的 Model.find 什么也没返回?