首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期对分组进行排序,不考虑小时/分钟/秒

问按日期对分组进行排序,不考虑小时/分钟/秒
EN

Stack Overflow用户
提问于 2016-01-28 23:10:32
回答 5查看 24.5K关注 0票数 12

嘿,所以我试图从数据库中查询,使用Sequelize (Node.js ORM表示postgreSQL),我尝试按日期范围分组,并统计表中有多少项。

现在我的代码是

代码语言:javascript
复制
 Task.findAll({
    attributes: ['createdAt'],
    group: 'createdAt'
  })

但是正如您所看到的,分组只考虑了确切的日期(包括秒),所以分组实际上是没有意义的,因为不管发生什么,都不会有重叠的项,并且具有完全相同的秒计数。所以我希望它只是基于日,年,月的分组。

我假设它必须类似于sequelize.fn(.)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-01-29 01:14:12

正如您所说的,这是用sequelize.fn(...)完成的,没有其他方法了。尝试:

代码语言:javascript
复制
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-limit-offset-order-and-group

票数 24
EN

Stack Overflow用户

发布于 2019-01-09 18:25:16

所选的答案在这里行不通。

这就是对我有用的东西。

代码语言:javascript
复制
Task.findAll({
    attributes: [
        [Sequelize.literal(`DATE("createdAt")`), 'date'],
        [Sequelize.literal(`COUNT(*)`), 'count']
    ],
    group: ['date'],
})
票数 13
EN

Stack Overflow用户

发布于 2021-05-25 05:21:18

用于后缀的和MYSQL

这对我起了作用:

代码语言:javascript
复制
Model.findAll({
      attributes: [
        /* add other attributes you may need from your table */
        [sequelize.fn('DATE', sequelize.col('createdAt')), 'Date']
      ],
      group: [sequelize.fn('DATE', sequelize.col('createdAt')), 'Date']
    })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35073918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档