从 PostgreSQL 中的时间戳中减去 current_time

subtract current_time from timestamp in PostgreSQL

我有一个 table,其中每个条目都有一个时间戳。我正在使用这个时间戳来计算例如上周每天的条目数。但是,我真的不在乎我得到的结果是否代表特定的一天。实际目标是将条目划分为 24 小时的箱子,我可以比较这些箱子,看看随着时间的推移是否有任何重大变化。此外,由于我处理的是几乎实时的数据,我想随时执行此分析并考虑最近的条目。如果我只是将每天的条目分组并在一天的中间执行查询,那么我将获得当天的不是特别有见地的结果。

我现在的想法是从条目的时间戳中减去当前时间,然后按天进行分组。这样我就可以得到 24 小时的分箱,每个分箱代表一个完整的 24 小时周期,最年轻的分箱也包含最新的条目。

像这样: created_on - current_time

当然我不能从时间戳中减去时间。有没有办法将 current_time 转换为间隔?或者是否有更简单的完全不同的方法?

Is there a way to convert current_time into an interval?

是的,就投吧。

注意使用current_time is discouraged所以最好用localtime代替

你可以这样做:

created_on - localtime::interval

但您似乎只想将时间戳的时间部分设置为 00:00:00,您可以使用 date_trunc()

date_trunc('day', created_on)