mysql - 如何获取今天的 sequelize js 记录

标签 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  |

下面的代码是我想出的,但它似乎不起作用。

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语句如下。

Executing (default): 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' .所以,如果我们比较它们,它永远不会给我们 true。结果是因为即使是同一天(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);

您需要创建这样的查询:created < [NOW] AND created > [TODAY_START] 为什么? 因为您将得到在 NOW 之后注册的所有价格的总和.此代码还将帮助您获取一系列日期的总数。

PostgreSQL 的替代品

请注意,PostgreSQL 允许您截断到特定的时间间隔。因此,您可以调用 sequelize.fn()方法来创建一个调用“date_trunc”的查询,您可以 read more in this link .像这样:

const SUM = await OrdersModel.sum('price', {
    where: {
      sequelize.fn('CURRENT_DATE'): {
        [Op.eq]:  sequelize.fn('date_trunc', 'day', sequelize.col('created'))
      }
    },
});
console.log(SUM);

同时记得更新到latest version :

npm i sequelize@5.8.6 --s

关于mysql - 如何获取今天的 sequelize js 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56340151/

相关文章:

c# - MySQL BINARY 类型表示

node.js - package.json 中的 "style"字段

mysql - 从 3 个不同的表中选择项目

php - mysqli 准备语句 num_rows 返回 0 而查询返回大于 0

sql - 我需要帮助编写一个复杂的(对我而言)SELECT 语句

javascript - 将 javascript 对象附加到 json 文件

Javascript/Node.js : data patching scheme

node.js - EJS 包括相对于设置 View 路径的嵌套目录中的部分内容

azure - 如何在生产中的 Nuxt 静态文件响应上添加 CORS header ?

node.js - NodeJs Express 发送 403 并渲染