PostgreSQL - GROUP BY时间戳值?

Sha*_*man 19 sql database postgresql timestamp group-by

我有一张表中存有采购订单.每行都有一个时间戳,指示订单的下达时间.我希望能够创建一份报告,指出每天,每月或每年的购买数量.我想我会做一个简单的SELECT COUNT(xxx)FROM tbl_orders GROUP BY tbl_orders.purchase_time并获取值,但事实证明我不能GROUP BY一个时间戳列.

还有另一种方法来实现这一目标吗?我理想地喜欢灵活的解决方案,所以我可以使用我需要的任何时间范围(每小时,每月,每周等).感谢您提出的任何建议!

Bra*_*ley 19

这样做没有date_trunc函数(更容易阅读).

// 2014
select created_on::DATE from users group by created_on::DATE

// updated September 2018 (thanks to @wegry)
select created_on::DATE as co from users group by co
Run Code Online (Sandbox Code Playgroud)

我们在这里做的是将原始值转换为DATE,使得此值中的时间数据无关紧要.

  • 正是我想要的,转换为像"2016-06-27"这样的日期,白天很容易快速计算(*) (2认同)

Ano*_*mie 13

按时间戳列进行分组在这里工作正常,请记住,即使1微秒的差异也会阻止两行组合在一起.

要按较大的时间段进行分组,请按时间戳列上的表达式进行分组,该表达式返回适当的截断值.date_trunc在这里可以有用,也可以to_char.