Mul*_*yan 1 mysql node.js express sequelize.js
我有一张类似于下表的表格。我试图找到今天所有价格的总和。
| id| price | created |
|---|-------|----------------------|
| 0 | 500 | 2018-04-02 11:40:48 |
| 1 | 2000 | 2018-04-02 11:40:48 |
| 2 | 4000 | 2018-07-02 11:40:48 |
Run Code Online (Sandbox Code Playgroud)
下面的代码是我想出来的,但它似乎不起作用。
const TODAY = new Date();
const SUM = await OrdersModel.sum('price', {
where: {
created: TODAY,
},
});
console.log(SUM);
Run Code Online (Sandbox Code Playgroud)
即使今天有条目,SUM 的值为 0。我也尝试了以下但它也没有奏效。
const TODAY = new Date();
const SUM = await OrdersModel.sum('price', {
where: {
created: Sequelize.DATE(TODAY),
},
});
console.log(SUM);
Run Code Online (Sandbox Code Playgroud)
在终端查询的SQL语句如下。
执行(默认):SELECT sum(`price`) AS `sum` FROM `orders` AS `orders` WHERE `orders`.`created` = '2019-05-27 18:30:00';
这里发生的事情是您正在比较精确的时间戳,例如'2019-05-27 11:40:48'等于'2019-05-27 18:30:00'。所以这种比较永远不会给你结果,因为即使是同一天(5 月 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);
Run Code Online (Sandbox Code Playgroud)
您需要创建这样的查询:created < [NOW] AND created > [TODAY_START] 为什么?因为您将获得之后注册的所有价格的总和NOW。此代码还将帮助您获得一系列日期的总和。
请注意,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);
Run Code Online (Sandbox Code Playgroud)
还记得更新到最新版本:
npm i sequelize@5.8.6 --s
Run Code Online (Sandbox Code Playgroud)
小智 5
获取今天记录的最佳方式。
const op = sequelize.Op;
const moment = require('moment');
const TODAY_START = moment().format('YYYY-MM-DD 00:00');
const NOW = moment().format('YYYY-MM-DD 23:59');
const todaysRecord = await OrdersModel.findAll({
where: {
createdAt: {
[op.between]: [
TODAY_START,
NOW,
]
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4709 次 |
| 最近记录: |