node.js - mysql如何通过knex查询今天和七天内的汇总数据
问题描述
具体实现是要在product表中查询出今天、七天和三十天内的产品数量,具体的sql语句已经写好了
select sum(inputer as productNum) from `product` where to_days(`createdAt`)= to_days(now());
但是在knex.js里面我这样写根本不对
return knex(’product’) .where({ inputer: user, deletedAt: null }) .andWhere(’to_days(add_time)’, ’=’, ’to_days(now())’) .sum(’inputer as productNum’) .then(function (productRow) { return { product: productRow }; })
用having也不对,knex文档里没有看到聚合函数的使用方法,求指教
return knex(’product’) .where({ inputer: user, deletedAt: null }) .groupBy(id) .having(’to_days(add_time)’, ’=’, ’to_days(now())’) .sum(’inputer as productNum’) .then(function (productRow) { return { product: productRow }; })
问题解答
回答1:没用过knex.js,但SQL好像复杂化了(原SQL会对createdAt字段进行运算,有可能会让该字段的索引失效)。
SELECT sum(inputer) AS product_num FROM `product`WHERE createdAt >= ?
通过程序计算出今天、七天前和三十天前的起始时间(即yyyy-MM-dd 00:00:00),然后代入SQL即可。
相关文章:
1. docker绑定了nginx端口 外部访问不到2. python - 使用pandas的resample报错3. 网页爬虫 - python 爬取网站 并解析非json内容4. python - flask post提交timestamp不能作为参数,这是为什么?5. android - 类似于微信朋友圈图片这样的是在listview中嵌套gridview还是动态加入多个imageview呢?6. docker-machine添加一个已有的docker主机问题7. html - 类似这样的弹层用什么插件写比较好?8. vue.js - vue-router开启HTML5的history模式后nginx配置9. html5 - 图片一般一怎么的形式存放在服务器中的?10. node.js - mongodb查找子对象的名称为某个值的对象的方法

网公网安备