我的表
updatedAt
中有一个列User
,属于Date
类型,它存储日期和时间。我想仅使用日期而不是日期时间进行查询。我正在使用sequelize Sequelize.Op.gt
和Sequelize.Op.lt
运算符来通过添加Users
来在该确切日期更新24 * 60 * 60 * 1000
,无论时间如何。但日期不会增加一天。当我尝试减法时,它工作得完美无缺。我只能在使用 getTime() 方法后添加一天。
我很困惑为什么它在不使用
getTime()
的情况下进行减法时有效,但在加法时不起作用。谁能解释一下吗?
TL;博士
这个有效:
[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
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")
让我们一步步看看你的第二个案例
1.
new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
new Date(new Date(updatedAt) + 86400000)
new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)86400000')
new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)')
事情不必这么复杂。以下内容将为给定日期添加一天:
const mydate = new Date("2024-01-01")
const computedDate = +new Date(mydate) + 24*60*60*1000;
console.log(mydate, new Date(computedDate));
神奇之处在于在构造 Date 对象时在“new Date()”之前使用“+”。这将返回毫秒数。只需添加一天的毫秒数即可将日期提前至 1 天。