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. android - NavigationView 的侧滑菜单中如何保存新增项(通过程序添加)2. mysql服务无法启动1067错误,谁知道正确的解决方法?3. php - 第三方支付平台在很短时间内多次异步通知,订单多次确认收款4. php7.3.4中怎么开启pdo驱动5. jquery清除input type为password?6. 这段代码既不提示错误也看不到结果,请老师明示错在哪里,谢谢!7. tp5 不同控制器中的变量调用问题8. 老师 我是一个没有学过php语言的准毕业生 我希望您能帮我一下9. ueditor上传服务器提示后端配置项没有正常加载,求助!!!!!10. 提示语法错误语法错误: unexpected ’abstract’ (T_ABSTRACT)
