我正在使用Postgres与NodeJS和Knex。我有一些created_at格式2016-12-12 14:53:17.243-05
的记录。我希望按小时对所有记录进行分组,以便:
14:00:00-15:00:00
在该小时内将有n条记录。15:00:00-16:00:00
在该小时内将有n条记录。我打算通过查询我想要的记录,然后使用momentJS
按小时对它们进行分组来实现这一点,但我认为这应该在查询上处理。我只是不确定语法是什么样的。
这是我的开始查询:
getChatVolume: function(startDate, endDate) {
var chats = db.knex
.select(['sessions.id', db.knex.raw('sessions.start_timestamp::date as date')])
.from('sessions')
.where(db.knex.raw('sessions.start_timestamp'), '>=', startDate)
.andWhere(db.knex.raw('sessions.start_timestamp'), '<=', endDate)
.groupByRaw("date_trunc('hour', sessions.start_timestamp)")
return chats;
},
This explains如何为MySQL,Oracle和SQL Server做到这一点,而不是Knex。
答案 0 :(得分:0)
groupByRaw — .groupBy(sql)
Adds a raw group by clause to the query.
所以试试这个,
.groupByRaw("date_trunc('hour', messages.created_at)")