【问题标题】:Sequelize grouping by hours of a date rangeSequelize 按日期范围的小时分组
【发布时间】:2015-05-07 20:52:12
【问题描述】:

我是 sequelize (postgres) 的新手,我无法在文档中找到如何选择一天中的时间(日期范围)、按它们分组并执行计数。

查询如下所示:

SELECT
    COUNT (*),
    EXTRACT (HOUR FROM paid_at) AS HOUR
FROM
    transactions
WHERE paid_at >= '2015-01-01 00:00:00' AND paid_at <= '2015-01-31 23:59:59'
GROUP BY
    HOUR
ORDER BY hour asc

有人可以向我发送正确的方向吗?我发现续集文档非常基础。缺少高级示例。

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    这是我使用 Sequelize 3 提出的解决方案。

    var payments_by_hour = await Payment.findAll({
      where: { 
        paid_at: {
          $lte: '2015-01-31 23:00:00',
          $gte: '2015-01-01 00:00:00'
        }
      },
      attributes: [
        [ sequelize.fn('date_trunc', 'hour', sequelize.col('updated_at')), 'hour'],
        [ sequelize.fn('count', '*'), 'count']
      ],
      group: 'hour'
    });
    

    您还可以使用纪元微秒值(原生于 JS 和 PSQL)来表示日期,例如

    $lte: new Date(),
    $gte: new Date(new Date() - 24 * 3600 * 1000)
    

    【讨论】:

      猜你喜欢
      • 2013-11-04
      • 2021-11-16
      • 2013-05-19
      • 2010-10-31
      • 2016-09-22
      • 2019-02-19
      • 2019-02-14
      相关资源
      最近更新 更多