検索

ホームページ  >  に質問  >  本文

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 };
  })
怪我咯怪我咯2788日前827

全員に返信(1)返信します

  • PHPz

    PHPz2017-04-17 15:01:44

    knex.js を使用したことはありませんが、SQL は複雑のようです (元の SQL は createdAt フィールドに対して操作を実行するため、このフィールドのインデックスが無効になる可能性があります)。

    リーリー

    今日、7日前、30日前の開始時刻(yyyy-MM-dd 00:00:00)をプログラムで計算し、SQLに代入します。

    返事
    0
  • キャンセル返事