rep*_*epo 7 javascript sql postgresql node.js sequelize.js
嘿所以我试图从数据库查询,使用Sequelize(Node.js ORM for postgreSQL),我试图按日期范围分组,并保持该表中的项目数量的计数.
现在我的代码是
Task.findAll({
attributes: ['createdAt'],
group: 'createdAt'
})
Run Code Online (Sandbox Code Playgroud)
但是你可以看到分组只考虑确切的日期(包括秒),因此分组实际上是没有意义的,因为无论什么都没有重叠的项目与完全相同的第二个计数.所以我希望它只是基于日,年和月的小组.
我假设它必须像sequelize.fn(...)
bar*_*ity 13
正如你所说,它完成了sequelize.fn(...),没有别的办法.尝试:
Task.findAll({
group: [sequelize.fn('date_trunc', 'day', sequelize.col('createdAt'))]
})
Run Code Online (Sandbox Code Playgroud)
我认为这可能会起到作用.如果没有,我们会看到如何做到这一点;)
请注意,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 -limit偏移阶和分组
小智 8
选择的答案在这里不起作用。
这就是对我有用的东西。
Task.findAll({
attributes: [
[Sequelize.literal(`DATE("createdAt")`), 'date'],
[Sequelize.literal(`COUNT(*)`), 'count']
],
group: ['date'],
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8060 次 |
| 最近记录: |