sqlite 我可以在DBKnex Select中仅请求月份吗?

j13ufse2  于 8个月前  发布在  SQLite
关注(0)|答案(1)|浏览(58)

我正在开发一个React + Knex + sqlite3网站。我想接收稍后将用于生成图形的信息。这是目前的路线。

router.get("/data/graph",async (req,res) => {
    try {
        const totalPerMonth = await dbKnex("books")
        .select('sell_date')
        .sum({ total: "price" })
        .groupBy("sell_date");
        res.status(200).json(totalPerMonth);
    } catch(error) {
        res.status(400).json({msg:error.message});
    }
})

“price”是浮点值,“sell_date”是日期值。问题是我没有得到月份,而是得到了整个日期,包括日、月和年。我该怎么弥补?
我确实意识到我需要指定请求,但我不知道如何指定。

jvidinwx

jvidinwx1#

您需要使用.raw()创建一个要分组的month-year变量。原始查询的细节可以取决于底层数据库。
例如,对于postgres,您可以使用to_date()函数

const totalPerMonth = await dbKnex("books")
  .select(dbKnex.raw("to_date(sell_date,'YYYY/MM')"))
  .sum({ total: "price" })
  .groupByRaw("1");

这应按“2023- 01”、“2023-02”等分组...

相关问题