【问题标题】:How to get data from the last 5 FULL minutes?如何从最后 5 整分钟获取数据?
【发布时间】:2018-10-31 16:06:23
【问题描述】:

如果我写:

SELECT *
FROM table
WHERE date >= NOW - INTERVAL '5 MINTUE';

我将获取最后 5 分钟的所有数据,但第一分钟和最后一分钟不会是完整的分钟,它们可能是部分分钟。这意味着如果“NOW()”是 4:30:24,那么 NOW() - INTERVAL '5 MINUTE' 将让我从 4:25:24 到 4:30:24。第 25 分钟是不完整的,仅包含 36 秒,与第 30 分钟相同,仅包含 24 秒。

我将如何获得最后完整的 5 分钟?我考虑删除第一分钟和最后一分钟或最小/最大,但是当我考虑分钟 [58, 59, 60, 01, 02] 时,这个想法变成了一个挑战。在这种情况下,min/max 不考虑在 60 分钟后返回 0 的循环。

任何想法都会有所帮助。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    你可以使用date_trunc():

    SELECT *
    FROM table
    WHERE date >= date_trunc('minute', now()) - interval '5 minute' and
          date < date_trunc('minute', now())
    

    【讨论】:

    • 啊……天才!不错的小功能。谢谢!
    【解决方案2】:

    试试这样的

    SELECT *
    FROM table
    WHERE date >= DateADD(mi, -5, Current_TimeStamp)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2016-05-07
      • 2021-10-14
      • 2021-01-30
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多