按日期范围的小时进行分组

时间:2015-03-06 09:17:03

标签: node.js postgresql sequelize.js

我是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

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

1 个答案:

答案 0 :(得分:6)

这是我使用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)