Здесь происходит то, что вы сравниваете точные временные метки, например '2019-05-27 11:40:48'
и '2019-05-27 18:30:00'
. Так что это сравнение никогда не даст вам результата, потому что даже если это один и тот же день (27 мая), но время отличается.
Так что здесь у вас есть возможное решение.
const Op = Sequelize.Op;
const TODAY_START = new Date().setHours(0, 0, 0, 0);
const NOW = new Date();
const SUM = await OrdersModel.sum('price', {
where: {
created: {
[Op.gt]: TODAY_START,
[Op.lt]: NOW
},
},
});
console.log(SUM);
Вам необходимо создать запрос, подобный следующему: created < [NOW] AND created > [TODAY_START]
Почему? , потому что вы получите сумму всех цен, зарегистрированных после NOW
. Этот код также поможет вам получить общее количество дат.
Альтернатива для PostgreSQL
Обратите внимание, что PostgreSQL позволяет вам усекать до определенных интервалов. Таким образом, вы можете вызвать метод sequelize.fn()
, чтобы создать запрос, который вызывает 'date_trunc', вы можете узнать больше по этой ссылке . Как это:
const SUM = await OrdersModel.sum('price', {
where: {
sequelize.fn('CURRENT_DATE'): {
[Op.eq]: sequelize.fn('date_trunc', 'day', sequelize.col('created'))
}
},
});
console.log(SUM);
Также не забудьте обновить до последней версии :
npm i sequelize@5.8.6 --s