在尊重Postgres时区的同时按天计数事件

时间:2019-04-07 18:20:55

标签: sql postgresql timezone

我在postgres数据库中有一个很大的表。它有一个timestamp列,我想计算一个时间段内“每天”的行数。通过在时间戳列上GROUP BY的输出date_trunc,天真地做到这一点很容易。但是,这并不能说明用户的时区(我想按天分组,以使用户的午夜为他们的午夜,而不是UTC午夜。

我已经通过在截断之前添加代表用户时区偏移的间隔来手动调整时间戳来实现此目的。可以,但是很慢,并且导致我设置的索引没有被使用。

是否有更好的方法来实现这一点,而Postgres会更好地支持它?

1 个答案:

答案 0 :(得分:0)

如果您知道值所在的时区,则可以切换时区:

select date_trunc('day', col at time zone 'American/New_York')