Sequelize:在日期中添加一天不起作用
Sequelize: Adding a day to the date doesn't work
我的 table User
中有一列 updatedAt
,它是 Date
类型的,它存储日期和时间。我只想使用日期而不是日期时间进行查询。我正在使用 sequelize Sequelize.Op.gt
和 Sequelize.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")
我的 table User
中有一列 updatedAt
,它是 Date
类型的,它存储日期和时间。我只想使用日期而不是日期时间进行查询。我正在使用 sequelize Sequelize.Op.gt
和 Sequelize.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")