嘿,我尝试使用Sequelize(用于PostgreSQL的Node.js ORM)从数据库中查询,尝试按日期范围进行分组,并保留该表中有多少项的计数。
现在我的代码是
Task.findAll({ attributes: ['createdAt'], group: 'createdAt' })
但是,正如您所看到的,分组仅考虑了确切的日期(包括秒),因此分组实际上是没有意义的,因为无论什么时候都不会有重叠的项目具有完全相同的秒计数。因此,我希望它只是根据日,年和月进行分组。
我认为这将必须像sequelize.fn(…)
如您所说,它已经完成,sequelize.fn(...)没有其他方法。尝试:
sequelize.fn(...)
Task.findAll({ group: [sequelize.fn('date_trunc', 'day', sequelize.col('createdAt'))] })
我认为这可能会胜任。如果没有,我们将看看如何做;)
请注意,PostgreSQL允许您截断到特定间隔。有关更多信息,请访问:http : //www.postgresql.org/docs/9.1/static/functions-datetime.html#FUNCTIONS- DATETIME-TRUNC
另外,要了解分组(和顺序)的工作方式,请参见Sequelize的文档:https : //github.com/sequelize/sequelize/blob/172272c8be9a847b2d64f0158826738703befddf/docs/docs/models- usage.md#manipulating-the-dataset- with限制偏移量和组