从 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)
我有一个 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)