我的表updatedAt
中有一列User
,其列为Date
,它存储日期和时间。我只想查询日期,而不要查询日期时间。我正在使用续集Sequelize.Op.gt
和Sequelize.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
答案 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")