如何在sequelizejs中使用mysql的datediff

时间:2018-03-05 03:00:49

标签: javascript node.js sequelize.js

我正在尝试将此sql实现到我的sequelize

SELECT file_id FROM table WHERE datediff(curdate(),create_date) > 5;

   Here is my sequelize

   findOverPeriodFile: function () {
    return table.findAll({
        where:{
            60: {lt: Sequelize.fn('')}
        }
    });
}

我是seuelize的新手,我试图搜索谷歌,但它没有任何帮助。任何人都有这种情况的答案?我不知道该把什么放在续集的声明中?抱歉我的英语不好。

4 个答案:

答案 0 :(得分:4)

你走了:

您可以使用

生成WHERE datediff(curdate(),create_date) > 5;
{ 
    where: sequelize.where(sequelize.fn('datediff', sequelize.fn("NOW") , sequelize.col('create_date')), {
        $gt : 5 // OR [Op.gt] : 5
    })
}

答案 1 :(得分:0)

sequelize.where(sequelize.fn('datediff', sequelize.literal("day"), sequelize.col('Your Column date'), sequelize.fn("getdate")), {
          [Op.gt]: 0
        })

答案 2 :(得分:0)

sequelize.where(
    sequelize.fn(
        'timestampdiff', 
         sequelize.literal("minute"),
         sequelize.col('updatedAt'),
         sequelize.literal('CURRENT_TIMESTAMP')
    ), 
    {
        [Op.gte] : ACCEPTION_TIMEOUT
    }
)

如果像我这样的人正在寻找一种方法来找到续集的日期或时间差(不仅是几天),那么 timestampdiff 是一种可行的方法。

sequelize.literal("minute")-是时间单位。关于here

的更多信息

sequelize.col('updatedAt')-数据库中的列(日期时间)

sequelize.literal('CURRENT_TIMESTAMP')-将当前时间的文字序列化

{
   [Op.gte] : ACCEPTION_TIMEOUT
}

这是您选择时间的条件

答案 3 :(得分:0)

对于 Microsoft SQL Server (MSSQL) 这个对我有用。感谢@Vivek Doshi

z = [s.strip(" ") for s in z1]
return z

这将生成

let pending = await Table.findAll({
        where: {
            [Op.and] : [
                Sequelize.where(Sequelize.fn('datediff',  Sequelize.col('DD'), Sequelize.col('createdAt'), Sequelize.fn("GETDATE")), {
                    [Op.lt] : 1 
                }) ,
                { is_processed : '0' }
            ]
        }
    } );

这正是我想要的