Sequelize: добавление дня к дате не работает - PullRequest
0 голосов
/ 27 ноября 2018

У меня в таблице есть столбец updatedAt User, который имеет тип Date, он хранит дату вместе со временем.Я хочу сделать запрос, используя только дату, а не дату и время.Я использую операторы sequelize 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

1 Ответ

0 голосов
/ 27 ноября 2018

Давайте посмотрим на ваш второй случай шаг за шагом
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 не знает, что вы добавляете строку или число.Это ваш смущающий момент.В другом случае целочисленные операторы сложения и вычитания выполнены правильно

...