Sequelize:在日期中添加一天不起作用

Sequelize: Adding a day to the date doesn't work

我的 table User 中有一列 updatedAt,它是 Date 类型的,它存储日期和时间。我只想使用日期而不是日期时间进行查询。我正在使用 sequelize Sequelize.Op.gtSequelize.Op.lt 运算符通过添加 24 * 60 * 60 * 1000 在该确切日期更新 Users 而不管时间。但是日期不会增加一天。当我尝试减法时,它运行得非常完美。我只能在使用 getTime() 方法后添加一天。

我很困惑为什么它在不使用 getTime() 的情况下进行减法但在添加时不起作用。谁能解释一下?

TL;DR

这个有效:

[Sequelize.Op.gt]: new Date(new Date(updatedAt) - 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-26

这个工作:

[Sequelize.Op.gt]: new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-27

有效:

[Sequelize.Op.lt]: new Date(new Date(updatedAt).getTime() + 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-28

让我们一步步看你的第二个案例
1. new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
2. new Date(new Date(updatedAt) + 86400000)
3.new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)86400000')
和日期解析器忽略了输入字符串的“86400000”部分。
4.new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)')
现在您的输入没有被修改。 Javascript 不知道你是加字符串还是加数字。这是你的困惑点。在其他情况下,整数加法和减法运算符正确完成

sequelize.fn("DATEADD", sequelize.literal("DAY"), 4, sequelize.col('Your Date')) // 4 number of days adding

如果要查找包括此添加日期与当前日期的差异

sequelize.fn('DATEDIFF', sequelize.literal("DAY"), sequelize.fn("DATEADD", sequelize.literal("DAY"), 4, sequelize.col('Your Date')), sequelize.fn("GETDATE")