我有一个类似下表的表。我试图找到今天所有价格的总和。
| 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 |
下面的代码是我想出的,但它似乎不工作。
const TODAY = new Date();
const SUM = await OrdersModel.sum('price', {
where: {
created: TODAY,
},
});
console.log(SUM);
SUM的值为0,即使今天有条目。我也尝试了以下方法,但也没有效果。
const TODAY = new Date();
const SUM = await OrdersModel.sum('price', {
where: {
created: Sequelize.DATE(TODAY),
},
});
console.log(SUM);
在终端上查询的SQL语句如下。
正在执行(预设):SELECT sum(“price”')AS“sum”FROM“' orders”AS“'orders”WHERE“' orders”'.创建时间= '2019-05-27 18:30:00 ';
6条答案
按热度按时间qgzx9mmu1#
这里所发生的是,您正在比较精确的时间戳,例如
'2019-05-27 11:40:48'
等于'2019-05-27 18:30:00'
。因此,这种比较永远不会给您结果,因为即使是同一天(5月27日),但时间是不同的。所以这里你有一个可能的解决方案。
您需要创建如下查询:
created < [NOW] AND created > [TODAY_START]
**为什么?**因为您将获得NOW
之后登记的所有价格的总和。此代码还将帮助您获得一系列日期的总和。PostgreSQL的替代方案
注意PostgreSQL允许你截断到特定的时间间隔。所以,你可以调用
sequelize.fn()
方法来创建一个调用'date_trunc'的查询,你可以read more in this link。如下所示:另外,请记住更新到latest version:
tgabmvqs2#
获取今日记录的最佳方法。
iyfjxgzm3#
我们也可以使用[op.between],它将获取两个给定日期范围之间的数据。因此,如果我们给出今天的开始时间和当前时间,它将给出今天的数据。
快乐编码...
fcwjkofz4#
添加DATE FUNCTION以进行日期比较,而不考虑时间
js5cn81o5#
使用矩会更容易
2wnc66cl6#
您可以使用
Sequelize.literal
:如果没有未来日期,您可以按如下方式查询: