【问题标题】:subtract current_time from timestamp in PostgreSQL从 PostgreSQL 中的时间戳中减去 current_time
【发布时间】:2021-09-24 10:52:03
【问题描述】:

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

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

类似这样的: created_on - current_time

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

【问题讨论】:

  • extract(days FROM current_timestamp - created_on)?
  • 是的,这行得通!谢谢!

标签: sql postgresql time timestamp


【解决方案1】:

有没有办法将 current_time 转换为时间间隔?

是的,只需投射即可。

注意使用current_timeis discouraged,所以最好使用localtime

你可以这样做:

created_on - localtime::interval

但似乎您可能只想将时间戳的时间部分设置为 00:00:00,您可以使用 date_trunc() 来做到这一点

date_trunc('day', created_on)

【讨论】:

  • 是的,也可以!谢谢!我不知道不鼓励使用current_time,但现在也更清楚为什么将current_time 转换为间隔不起作用。但是,date_trunc 的最后一部分并不是我真正想要的,因为在最近的 bin/date/day 中,我仍然得到不到 24 小时的条目(假设或多或少不断涌入的条目)。
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 2014-04-25
  • 2016-10-17
相关资源
最近更新 更多