续集:在日期上添加一天不起作用

时间:2018-11-27 08:46:29

标签: node.js sequelize.js graphql sequelize-cli

我的表updatedAt中有一列User,其列为Date,它存储日期和时间。我只想查询日期,而不要查询日期时间。我正在使用续集Sequelize.Op.gtSequelize.Op.lt运算符,通过添加Users来使24 * 60 * 60 * 1000在该确切日期更新,而不考虑时间。但是日期不会增加一天。当我尝试减去时,它可以正常工作。我只能在使用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

2 个答案:

答案 0 :(得分:0)

让我们逐步了解您的第二种情况
1. 0.23.1
2. new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
3. new Date(new Date(updatedAt) + 86400000)
和日期解析器从输入中忽略了字符串的'86400000'部分。
4. new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)86400000')
现在您的输入未修改。 Javascript不知道您要进行字符串添加还是数字添加。这是您的困惑点。在其他情况下,整数加减运算符正确完成

答案 1 :(得分:0)

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")