sequelize为日期类型创建sql

cigdeys3  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(292)

我在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 
        }
    })
}

这是可行的,但它给出了一个弃用警告,说它将在将来的版本中被删除。
谢谢你的帮助!

pgky5nke

pgky5nke1#

找到解决办法了!
所以我将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'

我希望能把你们从我做的长期研究中解救出来!记住要快乐!

相关问题